Home  >  Article  >  Backend Development  >  Detailed introduction to code sharing using xsd to verify xml

Detailed introduction to code sharing using xsd to verify xml

黄舟
黄舟Original
2017-03-23 16:55:102166browse

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();
        }
    }
}
contosoBooks.xsd

<?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

StreamWriter,

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn