此示例展示了如何使用生成的Schema包装库以编程方式读取或写入符合该Schema的XML文档。在使用示例代码之前,请先了解以下Schema的结构。
在本例中使用的Schema描述了一个图书库。下方是此Schema的完整定义。如果您想获得与本实例相同的结果,请将此代码片段保存为Library.xsd。您需要此Schema来生成本例中使用的代码库。
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns="http://www.nanonull.com/LibrarySample" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.nanonull.com/LibrarySample" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="Library"> <xs:complexType> <xs:sequence> <xs:element name="Book" type="BookType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="LastUpdated" type="xs:dateTime"/> </xs:complexType> </xs:element> <xs:complexType name="BookType"> <xs:sequence> <xs:element name="Title" type="xs:string"/> <xs:element name="Author" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="ID" type="xs:integer" use="required"/> <xs:attribute name="Format" type="BookFormatType" use="required"/> </xs:complexType> <xs:complexType name="DictionaryType"> <xs:complexContent> <xs:extension base="BookType"> <xs:sequence> <xs:element name="FromLang" type="xs:string"/> <xs:element name="ToLang" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name="BookFormatType"> <xs:restriction base="xs:string"> <xs:enumeration value="Hardcover"/> <xs:enumeration value="Paperback"/> <xs:enumeration value="Audiobook"/> <xs:enumeration value="E-book"/> </xs:restriction> </xs:simpleType> </xs:schema> |
Library是一个complexType的根元素。它在XMLSpy的Schema视图中表示如下:
如上所示,Library有一个LastUpdated特性(被定义为xs:dateTime),并存储了一系列图书。每本书的类型都是xs:complexType,并具有两个特性:ID(被定义为xs:integer),和Format。图书的格式可以是精装、平装、有声读物或电子书。在Schema中,Format被定义为xs:simpleType,其中使用了上述值的枚举。
每本书都有一个Title元素(被定义为xs:string),以及一个或多个Author元素(被定义为xs:string)。
库中还包含字典类的图书。字典是DictionaryType类型,它通过扩展派生自BookType类型。因此,字典继承了图书的所有特性和元素,以及两个附加元素:FromLang和ToLang,如下所示。
FromLang和ToLang元素分别存储字典的源语言和目标语言。
因此,根据以上Schema有效的XML实例文件可能如下方代码片段所示(假设它与Schema文件位于同一目录中):
<?xml version="1.0" encoding="utf-8"?> <Library xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.nanonull.com/LibrarySample" xsi:schemaLocation="http://www.nanonull.com/LibrarySample Library.xsd" LastUpdated="2016-02-03T17:10:08.4977404"> <Book ID="1" Format="E-book"> <Title>The XMLSpy Handbook</Title> <Author>Altova</Author> </Book> <Book ID="2" Format="Paperback" xmlns:n1="http://www.nanonull.com/LibrarySample" xsi:type="n1:DictionaryType"> <Title>English-German Dictionary</Title> <Author>John Doe</Author> <FromLang>English</FromLang> <ToLang>German</ToLang> </Book> </Library> |
下一节将展示如何以编程方式读取此类文件,或以编程方式写入该文件。首先,请按照从XML Schema或DTD生成代码中描述的步骤从以上Schema生成Schema包装代码。