[英]how to compare XML strings in C#?
在數據庫中,我將XML字符串存儲在列中。 下面是我的XML結構:
<?xml version="1.0"?>
-<ProductAttributes xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<Attribute Required="false" ID="2" Name="Color">
<Value ID="18">Light Pink</Value>
</Attribute>
-<Attribute Required="false" ID="1" Name="Size">
<Value ID="9">XL</Value>
</Attribute>
</ProductAttributes>
另一個XML是:
<?xml version="1.0"?>
-<ProductAttributes xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<Attribute Required="false" ID="1" Name="Size">
<Value ID="1">S</Value>
</Attribute>
-<Attribute Required="false" ID="2" Name="Color">
<Value ID="4">Red</Value>
</Attribute>
-<Attribute Required="false" ID="3" Name="Weight">
<Value ID="6">10gr</Value>
</Attribute>
</ProductAttributes>
筆記
可以有n個xml字符串,每個xml字符串可以有m個標記
屬性節點的順序可以不同,例如第一個屬性Id = 1可以是第一個屬性,第二個屬性Id = 1可以是最后一個屬性。
要求不是比較這n個XML字符串,而是查找任何字符串是否具有完全重復的屬性(此比較將考慮值,因為順序可以不同)。
請指導並幫助我。
不要比較XML字符串。 將它們用作XML解析器的輸入,XML解析器會將它們變成XML樹,然后在樹中搜索匹配的元素並比較它們的屬性列表。
您可能需要嘗試從此處下載的XML Diff and Patch GUI Tool 。 我以前用過,它可以正常工作。
您可以迭代xml文檔A的所有節點,對於每個節點,請在xml文檔B中查找其xpath。如果未找到任何路徑或找到了路徑,但值不同,則該文檔不是“相同的”。
然后,您必須對B中的所有節點執行相同的操作,檢查A中的xpath,以確保“ B中沒有但A中沒有”
通過在未找到xpath或值不匹配時退出為“不等於”來進行優化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.