Altova XMLSpy 2023 Enterprise Edition

此示例展示了如何使用生成的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视图中表示如下:

xsd_diagram_Library

如上所示,Library有一个LastUpdated特性(被定义为xs:dateTime),并存储了一系列图书。每本书的类型都是xs:complexType,并具有两个特性:ID(被定义为xs:integer),和Format。图书的格式可以是精装、平装、有声读物或电子书。在Schema中,Format被定义为xs:simpleType,其中使用了上述值的枚举。

 

每本书都有一个Title元素(被定义为xs:string),以及一个或多个Author元素(被定义为xs:string)。

 

库中还包含字典类的图书。字典是DictionaryType类型,它通过扩展派生自BookType类型。因此,字典继承了图书的所有特性和元素,以及两个附加元素:FromLangToLang,如下所示。

xsd_diagram_DictionaryType

FromLangToLang元素分别存储字典的源语言和目标语言。

 

因此,根据以上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包装代码。

 

© 2017-2023 Altova GmbH