xml文件比较

时间:2011-05-10 05:35:50

标签: c# xml file

我想只比较两个xml文件的节点,而不是使用c#比较节点的值。 如果两个文件中的节点格式不同,则应弹出一条消息..

3 个答案:

答案 0 :(得分:0)

我将使用Linq to XML:

XDocument doc = XDocument.Parse(data);

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

然后用它来比较:

foreach(列表中的var项目)

{

if(((XElement)item).Name.LocalName == property.Name)
 }

但您的最终实施应该检查节点数和其他问题

答案 1 :(得分: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");

希望这会有所帮助......

答案 2 :(得分: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(); }
}