2011-05-10 98 views
1

我只想比較兩個xml文件的節點,但不是使用c#的節點的值。 如果在兩個文件中的節點格式不相同,則它應該彈出消息..xml文件比較

回答

0

我將使用LINQ到XML:

的XDocument DOC = XDocument.Parse(數據);

var list = doc.DescendantNodes()。其中​​(i => i是XElement);

,然後用它來比較:

的foreach(在列表VAR項)

{

如果(((的XElement)項).Name.LocalName == propert.Name)
}

,但最終實現應該檢查節點等問題

0
 XDocument file1 = XDocument.Load("somefile1.xml"); 
     XDocument file2 = XDocument.Load("somefile2.xml"); 
     if (file1.Nodes().Intersect(file2.Nodes()).Count() > 0) 
     MessageBox.Show("hey i popped up"); 

希望這有助於...

+0

是越來越整個元素數據,但它不會將文件與元素名稱進行比較,它正在比較整個元素數據。 – kawadw 2011-05-10 08:02:22

0

假設由「節點格式」你的意思是元素&他們的名字,這會走的元素樹,比較名稱:

void Main() 
{ 
    XElement thing = new XElement("test", new XElement("child")); 
    XElement otherThing = new XElement("test", new XElement("child")); 

    var comparer = new XElementComparer(); 
    var areSame = comparer.Equals(thing, otherThing); 

    Console.WriteLine(areSame); 
} 

class XElementComparer : IEqualityComparer<XElement> 
{ 
    public bool Equals(XElement first, XElement second) 
    { 
     if (first.Name != second.Name) 
      return false; 
     else if (!first.Elements().SequenceEqual(second.Elements(), this)) 
      return false; 
     else 
      return true; 
    } 

    public int GetHashCode(XElement element) { return element.GetHashCode(); } 
}