目前,我正在使用 XPath 表示法将元素添加到我的 XmlDocument 中,为此我编写了代码,将元素放置在文件中的正确位置。除了一个例外。我不知道如何让它注意我的 XSD 文件中定义的顺序规则。
有没有办法将元素添加到 XmlDocument 以便遵守管理我的 XML 文件的 XSD 中定义的序列?
例如,我的 xml 文档应如下所示:
<rootTag>
<area name="I define an area">
<description>some text here</description>
<point x="1" y="1" />
<point x="2" y="2" />
<point x="3" y="3" />
</area>
</rootTag>
然而,我得到了,这取决于用户为上面的子标签输入值的顺序:
<rootTag>
<area name="I define an area">
<point x="1" y="1" />
<point x="2" y="2" />
<point x="3" y="3" />
<description>some text here</description>
</area>
</rootTag>
为了更正上述问题,我从 XSD 文件创建了一个 DataSet(名为 tempXmlDataset)。我将 XmlDocument 的内容传递到 tempXmlDataset 中,然后事情得到适当的重新排序。
但是,我的问题是由 XML 文档的第一个子项的选项引起的。此选项在 XSD 中定义为允许“区域”、“线”或“点”对象。“area”和“line”都有“point”元素作为子元素。但是子“点”与“点”对象不同。因此,您可能已经意识到, tempXmlDataset.ReadXmlSchema(...) 创建了一个“点”表,其中只有 x 和 y。这是根据“面积”和“线”的孩子的定义。
因此,当我的代码运行 tempXmlDataset.ReadXml(...) 时,不会读取“点”对象的属性,因为它将“点”对象视为子“点”。这是“点”对象的示例:
<rootTag>
<point name="I define a point" x="3" y="3" otherAttributes="">
<description>some text here</description>
</point>
</rootTag>