我在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生成器可以处理对象顺序,或者我必须编写自己的类?
提前感谢
我从未见过XSD到代码绑定工具,它可以满足您的需求,当然不是在.NET平台上——您似乎暗示它是目标。这是不可能在不损失保真度的情况下往返XML的情况之一(反序列化、序列化然后比较,失败)。为了完整起见,/order选项不适用于xsd.exe,因为就您定义的xsd而言,实际上没有顺序。它也是XSD所能描述的一个限制,这不可避免地反映在工具实现中。