簡體   English   中英

如何在C#中比較XML字符串?

[英]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>

筆記

  1. 可以有n個xml字符串,每個xml字符串可以有m個標記

  2. 屬性節點的順序可以不同,例如第一個屬性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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM