您好,登錄后才能下訂單哦!
這篇文章主要介紹如何使用xsd驗證xml,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Xsd
XML結構定義 ( XML Schemas Definition )
XML Schema 是DTD的替代品。XML Schema語言也就是XSD。
XML Schema描述了XML文檔的結構。可以用一個指定的XML Schema來驗證某個XML文檔,以檢查該XML文檔是否符合其要求。
文檔設計者可以通過XML Schema指定一個XML文檔所允許的 結構和內容,并可據此檢查一個XML文檔是否是有效的。XML Schema本身是一個XML文檔,它符合XML語法結構。
可以用通用的XML解析器解析它。
一個XML Schema會定義:文檔中出現的元素、文檔中出現的屬性、子元素、子元素的數量、子元素的順序、元素是否為空、元素和屬性的數據類型、元素或屬性的默認和固定值。
XSD文件的后綴名為.xsd。
在下面的代碼示例中,上面的架構添加到 XmlReaderSettings 對象的 XmlSchemaSetSchemas 屬性中。 XmlReaderSettings 對象作為參數傳遞給驗證上述 XML 文檔的 XmlReader 對象的 Create 方法。
XmlReaderSettings 對象的 ValidationType 屬性設置為 Schema,強制通過 XmlReader 對象的 Create 方法驗證 XML 文檔。將 ValidationEventHandler 添加到 XmlReaderSettings 對象以處理 XML 文檔和架構驗證過程中發(fā)現的錯誤所引發(fā)的任何 Warning 或 Error 事件。
下面是一個例子:
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>
以上是“如何使用xsd驗證xml”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。