我正在将几个.xml文件合并在一起,并且需要从每个.xml文档中获取某些子元素并将它们放入第三个。这没关系,但问题是那时我的“子”节点有点随机顺序(好吧,我从第一个文件中选择的,然后是我从第二个文件中选择的),以及模式文件(.xsd如果您愿意,将这些孩子定义为“序列”或xs:sequence
。因此输出文件不再通过验证,因为虽然每个文件按顺序都有其元素,但结果文件却没有。
我想知道的是,因为我有.xsd,并且我有一个“大部分”有效的.xml文件,C#中是否有任何方法可以根据所有节点“移动”所有节点在.xsd中定义的顺序没有太大的痛苦?显然我可以实现一种“排序”,但我希望有一些内置的东西。或者更好的是,自动执行此操作的内置合并也可以正常工作。
有什么想法吗?
答案 0 :(得分:2)
查看要求,是否可以选择让XSD模型指导您?
您可以将XSD加载到XmlSchema类中。现在你可以得到模型了。通过遍历模式节点的子节点,您将获得保证订购。所以,低音
希望这有帮助,
答案 1 :(得分:1)
看看XmlSchemaValidator Class。 Tihs类执行“基于推送”的验证 - 它有效地告诉您接下来的有效性。也许您可以使用它来重新排序XML。我已经能够使用它来生成符合模式的示例XML。
答案 2 :(得分:0)
如果你可以控制.xsd,this post可能会提供一个起点。
当更改架构不是一个选项时,您仍然可以将xml转换为所需的结构。