【发布时间】:2011-09-05 19:05:46
【问题描述】:
我有一个 XML 文件,我正在使用 XmlSchemaInference 类在运行时推断其 XSD 架构。
示例文件:
<products>
<product id="1" name="t-shirt">
<size name="medium"/>
<size name="large"/>
<price>
<net>10</net>
<gross>25</gross>
</price>
</product>
<product id="2" name="computer mouse">
<price>
<net>50</net>
</price>
</product>
</products>
它确实有效 - 它很好地推断了架构:
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="products">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="product">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="size">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="price">
<xs:complexType>
<xs:sequence>
<xs:element name="net" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="gross" type="xs:unsignedByte" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:unsignedByte" use="required" />
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
问题是:
如何迭代(递归?)通过此架构中的所有元素? XmlSchemaSet 类如何存储它们?我需要将它们呈现给用户,以便他们可以进行一些映射。
我正在从XmlSchemaSet.Schemas 属性中检索XmlSchema,然后呢? XmlSchema.Elements 只包含一项 (products),我找不到任何方法来查找它的子元素是什么。
【问题讨论】: