我正在比较基于相同XMLSchema的两个XML。 XML中的每个元素都有一个id(id没有说明顺序 - 最老的xmlElement具有最低的id等等)。 我的目标是获得两种XMLS之间的一致性。C#中的XmlSchemaElement排序顺序
给出一个非常简单的例子。 让有两个xml。第一个是这样的:
<EleType>
<Ele id="1"/>
<Name id="2"/>
<Description id="100"/>
<UnknownOrderEle1 id="3"/>
</EleType>
,第二个是这样的:
<EleType>
<Ele id="1"/>
<Name id="2"/>
<Description id="100"/>
<UnknownOrderEle2 id="4"/>
</EleType>
我的结果应该是id的映射。 它将从1:1开始,然后是2:2,100:100。在这一刻,我遇到了两个不同名称的XML元素。我知道它们可能不匹配,所以两种可能的解决方案是采用3:*(其中* =符号不匹配),然后是*:4或采取:4然后3:。 但只有一个办法是正确的解决方案,因为该方案说,UnknownOrderEle2(ID = 4)要来UnknownOrderEle1(ID = 3。前
所以我找过的XmlSchema类中的任何东西,XmlSchemaInfo
,XmlSchemaElement
,...它告诉我任何有关元素顺序的信息,我发现的唯一两种可能性对我来说并不是真正的解决方案,因为它们要么太耗时,要么不干净。 另一种方法是从两个xml中构建一个xml并验证它,如果它抛出一个验证异常,我知道我选择的顺序是错误的(绝对耗时)
如果有人知道更好的解决方案,我很乐意收到任何帮助。
感谢您的快速回答。我的模式比较复杂,但比较也是一个非常有限的因素。我正递归地比较数百个XML,所以我根本无法验证每个可能的比较差异。根据你的解决方案,我会尝试更复杂的方法,如果它不太长,它会在这里发布;-) – Akrostichon 2013-02-26 12:46:53