Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in die Codefreigabe mit xsd zur Überprüfung von XML

Detaillierte Einführung in die Codefreigabe mit xsd zur Überprüfung von XML

黄舟
黄舟Original
2017-03-23 16:55:102205Durchsuche

Xsd

ist ein Ersatz für DTD.
XML-Schema-Sprache ist auch XSD. XML-Schema beschreibt die Struktur des XML-Dokuments. Ein
XML-Dokument kann anhand eines angegebenen XML-Schemas validiert werden, um zu überprüfen, ob das XMLOb das Dokument seinen Anforderungen entspricht. Dokumentdesigner können die Struktur und den Inhalt eines XML-Dokuments über das XML-Schema
festlegen und entsprechend prüfen, ob ein XML-Dokument gültig ist. XML-Schema selbst ist ein XML-Dokument, das der XML-Syntax entspricht Struktur. kann mit dem generischen XML-Parser analysiert werden.
Ein XML-Schema definiert: Elemente, die im Dokument erscheinen, Attribute, die im Dokument erscheinen, Unterelemente , Unterelemente Die Anzahl der Elemente, die Reihenfolge der untergeordneten Elemente, ob das Element leer ist, der Datentyp von Elementen und Attributen, die Standard- und Festwerte von Elementen oder Attributen.

Das Suffix der XSD-Datei ist .xsd.

Im folgenden Codebeispiel wird das obige Schema zur Eigenschaft XmlSchemaSetSchemas des Objekts XmlReaderSettings hinzugefügt. Das Objekt XmlReaderSettings wird als Parameter an die Methode Create des Objekts Die Eigenschaft ValidationType
des Objekts
XmlReaderSettings
ist auf Schema festgelegt, wodurch die Erstellung XmlReader erzwungen wird >Methodenvalidierung XML Dokument. Fügen Sie ValidationEventHandler zum Objekt oder Fehler Ereignis. Hier ein Beispiel:


contosoBooks.xsd

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




Bemerkungen: Über einige andere Klassen oder Instanzen von Xsd

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

StreamReader, XmlSchema,XmlSchemaSet

Stream stream = new MemoryStream(); //Wenn ein Objekt einer Klasse nicht initialisiert werden kann, können Sie die Verwendung in Betracht ziehen it Der erbt die Klasse .

FileStream fs = File.Open("117.xml",FileMode.OpenOrCreate,FileAccess.ReadWrite);

123.xml");

TextReader tr2= new StringReader("asdfsadfsdf");



Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Codefreigabe mit xsd zur Überprüfung von XML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn