2011-08-26 25 views
1

我有一個這樣的XML。如何比較xml屬性與linq到XML?

<root> 
    <element attributeId="1" attribute2="1" attribute3="A" /> 
    <element attributeId="1" attribute2="2" attribute3="A" /> 
    <element attributeId="2" attribute2="1" attribute3="A" /> 
    <element attributeId="3" attribute2="1" attribute3="A" /> 
    <element attributeId="3" attribute2="1" attribute3="B" /> 
</root> 

我想比較,改變爲具有相同屬性Id元素的屬性,我創建了一個類來存儲的結果是這樣的:

public class Result 
{ 
    public string AttributeName { get; set; } 
    public string OldValue { get; set; } 
    public string NewValue { get; set; } 
} 

我希望從獲得結果列表,我創建了一個變量:

List<Result> result; 

如果我運行下面的代碼:

foreach (Result item in result) 
{ 
    /* Write results */ 
} 

預期的結果將是:

Attribute2 | 1 | 2 (For ID 1) 
Attribute2 | 1 | Null (For ID 2 as there is no value to compare) 
Attribute3 | A | B (For ID 3) 

這必須使用LINQ到XML完成,我已經知道從微軟的xmldiff但是這個工具是不是我的選擇。我已經花了一個多星期的時間研究並試圖解決這個問題。理想的情況是屬性的數量會有所改變,並將其作爲,因此,如果有人可以找出一種方法做上述相同的XML像

<root> 
    <element attid="1" aa="1" bb="A" cc="X" /> 
    <element attid="1" aa="2" bb="A" cc="Y" /> 
    <element attid="2" aa="1" bb="A" cc="X" /> 
    <element attid="3" aa="1" bb="A" cc="X" /> 
    <element attid="3" aa="1" bb="B" cc="X" /> 
</root> 
+0

你比較哪些屬性?我看到「新」和「舊」,但相比之下呢?你試圖比較哪些元素的屬性?你在這裏說的沒有任何意義。 –

+0

對於混淆,基本上我想比較按屬性ID分組的相同屬性的屬性,並獲得有差別的屬性,在同一個第一個示例中,我可以每個ID獲得最多2條記錄,每個不同屬性獲取一條記錄。如果沒有其他ID進行比較,我應該將兩個屬性都記錄爲記錄。 –

回答

-1

的名字,我公司不可能使用Linq2xml認爲。您可以簡單地使用XmlReader迭代xml元素並手動填寫您的列表<結果>。