Xsd
XML Structure Definition (XML Schemas Definition)
XML Schema is a replacement for DTD. XML SchemaThe language is also XSD.
XML Schema describes the structure of the XML document. You can validate a XML document against a specified XML Schema to check that XMLWhether the document meets its requirements.
Document designers can specify the allowed structure and content of an XML document through XML Schema, and can check accordingly Whether an XML document is valid. XML Schema itself is a XML document, which conforms to the XML syntax structure.
It can be parsed with the general XML parser.
A XML Schema will define: elements that appear in the document, attributes that appear in the document, sub-elements, sub-elements The number of elements, the order of child elements, whether the element is empty, the data type of elements and attributes, the default and fixed values of elements or attributes.
The suffix name of the XSD file is .xsd.
In the following code example, the above schema is added to the XmlReaderSettings object's XmlSchemaSetSchemas property. XmlReaderSettings The ValidationType property of the object is set to Schema
, forced to pass the
XmlReader object's Create MethodValidation XML Document. Add ValidationEventHandler to the XmlReaderSettings object to handle any Warning raised by errors found during XML document and schema validation or Error event.
Below is an example:
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;
using System.Xml.Serialization;
using System.Text;
public class XmlSchemaSetExample
{
static void Main()
{
XmlReaderSettings booksSettings = new XmlReaderSettings();
booksSettings.Schemas.Add("http://www.contoso.com/books", "contosoBooks.xsd");
booksSettings.ValidationType = ValidationType.Schema;
booksSettings.ValidationEventHandler += new ValidationEventHandler(booksSettingsValidationEventHandler);
MemoryStream ms = new MemoryStream();//定义一个数据流对象
XmlDocument doc = new XmlDocument();
doc.Load("contosoBooks.xml");
doc.Save(ms);
ms.Position = 0; //修改指针的位置
XmlReader books = XmlReader.Create(ms,booksSettings);
while (books.Read())
{ }
}
static void booksSettingsValidationEventHandler(object sender, ValidationEventArgs e)
{
if (e.Severity == XmlSeverityType.Warning)
{
Console.Write("WARNING: ");
Console.WriteLine(e.Message);
Console.Read();
}
else if (e.Severity == XmlSeverityType.Error)
{
Console.Write("ERROR: ");
Console.WriteLine(e.Message);
Console.Read();
}
}
}
<?xml version="1.0" encoding="utf-8"?> <xs:schema attribute For mDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2 001 /XMLSchema"> <xs:element name="bookstore"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="book"> <xs:complexType> <xs:sequence> <xs:element name="title" type="xs:=string" /> <xs:element name="author"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="name" type="xs:string" /> <xs:element minOccurs="0" name="first-name" type="xs:string" /> <xs:element minOccurs="0" name="last-name" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="price" type="xs:decimal" /> </xs:sequence> <xs:attribute name="genre" type="xs:string" use="required" /> <xs:attribute name="publicationdate" type="xs:date" use="required" /> <xs:attribute name="ISBN" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
contosoBooks.xml
##<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
<book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Remarks: About some other classes or instances of Xsd
StreamReader, XmlSchema, XmlSchemaSet
Stream stream = new MemoryStream(); //When an object of a class cannot be initialized, you can consider using its inheritancekind.
## FileStream fs = File.Open("117.xml", FileMode.OpenOrCreate, FileAccess.ReadWrite);
123.xml");## TextReader tr2= new StringReader("asdfsadfsdf");
The above is the detailed content of Detailed introduction to code sharing using xsd to verify xml. For more information, please follow other related articles on the PHP Chinese website!