我正在比較基於相同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