1

我的 XSD 架构中有以下复杂类型

<xs:complexType name="structure" mixed="true">
  <xs:choice maxOccurs="unbounded">
    <xs:element type="b" name="b" />
    <xs:element type="a" name="a" />
  </xs:choice>
</xs:complexType>

这使我可以像这样声明 XML 定义:

<structure>
    Hello <b>World</b> 
    Hello 2 <b>World 2</b> 
    <a>Hello3</a> <b>World3</b>
</structure>

现在我尝试从我的架构中生成 XSD 类,我尝试了 XSD.exe 和 XSD2Code。他们都产生类似的东西

class structure {
    List<a> a;
    List<b> b;
    List<string> text;
}

我的问题是,我需要跟踪在结构的 XML 内容中定义的那些元素的顺序。参考上面的例子,我想知道内部文本“Hello”出现在第一次出现 b 元素之前。

因为这显然需要更专业的生成器策略,也许我期待太多了,但是:是否有任何 XSD 生成器可以处理对象顺序或者我必须编写自己的类?

先感谢您

4

1 回答 1

1

我从来没有见过 XSD 到代码绑定工具可以在这里做你需要的,肯定不是在 .NET 平台上——你似乎暗示它是目标。这是在不损失保真度的情况下不可能往返 XML 的情况之一(反序列化、序列化然后比较,它会失败)。只是为了完整起见,/order 选项不适用于 xsd.exe,因为就您定义的 XSD 而言,实际上没有顺序。这也是 XSD 可以描述的限制,这不可避免地反映在工具实现中。

于 2013-09-04T20:01:12.933 回答