2011-05-10 92 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(); } 
}