[Visual Basic, C#, JScript] 下面的示例验证一个 XML 文件,并生成相应的错误或警告。
[Visual Basic]
Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Schema
public class Sample
public shared sub Main ()
'Load the schema collection.
Dim xsc as XmlSchemaCollection = new XmlSchemaCollection()
xsc.Add("urn:bookstore-schema", "books.xsd")
'Validate the file using the schema stored in the collection.
'Any elements belonging to the namespace "urn:cd-schema" generate
'a warning since the there is no schema matching that namespace.
Validate("store.xml", xsc)
end sub
private shared sub Validate(filename as String, xsc as XmlSchemaCollection)
Console.WriteLine()
Console.WriteLine("Validating XML file {0}...", filename.ToString())
Dim reader as XmlTextReader = new XmlTextReader (filename)
Dim vreader as XmlValidatingReader =new XmlValidatingReader (reader)
vreader.ValidationType = ValidationType.Schema
vreader.Schemas.Add(xsc)
'Set the validation event handler.
AddHandler vreader.ValidationEventHandler, AddressOf ValidationCallBack
'Read the XML data.
while (vreader.Read())
end while
'Close the reader.
vreader.Close()
end sub
'Display any warnings or errors.
public shared sub ValidationCallBack (sender as object, args as ValidationEventArgs)
if (args.Severity=XmlSeverityType.Warning)
Console.WriteLine(" Warning: Matching schema not found. No validation occurred." + args.Message)
else
Console.WriteLine(" Validation error: " + args.Message)
end if
end sub
end class
[C#]
using System;
using System.IO;
using System.Xml;
using System.Xml.Schema;
public class Sample
{
public static void Main ()
{
//Load the schema collection.
XmlSchemaCollection xsc = new XmlSchemaCollection();
xsc.Add("urn:bookstore-schema", "books.xsd");
//Validate the file using the schema stored in the collection.
//Any elements belonging to the namespace "urn:cd-schema" generate
//a warning since the there is no schema matching that namespace.
Validate("store.xml", xsc);
}
private static void Validate(String filename, XmlSchemaCollection xsc)
{
Console.WriteLine();
Console.WriteLine("\r\nValidating XML file {0}...", filename.ToString());
XmlTextReader reader = new XmlTextReader (filename);
XmlValidatingReader vreader=new XmlValidatingReader (reader);
vreader.ValidationType = ValidationType.Schema;
vreader.Schemas.Add(xsc);
//Set the validation event handler.
vreader.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
//Read the XML data.
while (vreader.Read()){}
//Close the reader.
vreader.Close();
}
//Display any warnings or errors.
public static void ValidationCallBack (object sender, ValidationEventArgs args)
{
if (args.Severity==XmlSeverityType.Warning)
Console.WriteLine("\tWarning: Matching schema not found. No validation occurred." + args.Message);
else
Console.WriteLine("\tValidation error: " + args.Message);
}
}
[JScript]
import System
import System.IO
import System.Xml
import System.Xml.Schema
public class Sample
{
public static function Main ()
{
//Load the schema collection.
var xsc : XmlSchemaCollection = new XmlSchemaCollection();
xsc.Add("urn:bookstore-schema", "books.xsd");
//Validate the file using the schema stored in the collection.
//Any elements belonging to the namespace "urn:cd-schema" generate
//a warning since the there is no schema matching that namespace.
Validate("store.xml", xsc);
}
private static function Validate(filename : String, xsc : XmlSchemaCollection)
{
Console.WriteLine();
Console.WriteLine("\r\nValidating XML file {0}...", filename.ToString());
var reader : XmlTextReader = new XmlTextReader (filename);
var vreader : XmlValidatingReader = new XmlValidatingReader (reader);
vreader.ValidationType = ValidationType.Schema;
vreader.Schemas.Add(xsc);
//Set the validation event handler.
vreader.add_ValidationEventHandler(ValidationCallBack);
//Read the XML data.
while (vreader.Read()){}
//Close the reader.
vreader.Close();
}
//Display any warnings or errors.
public static function ValidationCallBack (sender, args : ValidationEventArgs)
{
if (args.Severity==XmlSeverityType.Warning)
Console.WriteLine("\tWarning: Matching schema not found. No validation occurred." + args.Message);
else
Console.WriteLine("\tValidation error: " + args.Message);
}
}
[Visual Basic, C#, JScript] 前面的示例使用下列输入文件。
[Visual Basic, C#, JScript] store.xml
<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema" xmlns:cd="urn:cd-schema">
<book genre="novel">
<title>The Confidence Man</title>
<price>11.99</price>
</book>
<cd:cd>
<title>Americana</title>
<cd:artist>Offspring</cd:artist>
<price>16.95</price>
</cd:cd>
</bookstore>
books.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="urn:bookstore-schema"
elementFormDefault="qualified"
targetNamespace="urn:bookstore-schema">
<xsd:element name="bookstore" type="bookstoreType"/>
<xsd:complexType name="bookstoreType">
<xsd:sequence maxOccurs="unbounded">
<xsd:element name="book" type="bookType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="bookType">
<xsd:sequence>
<xsd:element name="title" type="xsd:string"/>
<xsd:element name="author" type="authorName"/>
<xsd:element name="price" type="xsd:decimal"/>
</xsd:sequence>
<xsd:attribute name="genre" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="authorName">
<xsd:sequence>
<xsd:element name="first-name" type="xsd:string"/>
<xsd:element name="last-name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
没有评论:
发表评论