XML 文件比较

本文关键字:比较 文件 XML | 更新日期: 2023-09-27 17:56:11

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

XML 文件比较

我将使用 Linq 到 XML:

XDocument doc = XDocument.Parse(data);

变量列表 = 文档。DescendantNodes()。其中(i => i 是 XElement);

然后使用它来比较:

foreach (列表中的变量项)

{

if (((XElement)item).Name.LocalName == propert.名称)
}

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

        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");

希望这有帮助...

假设"节点格式"是指元素及其名称,这将遍历元素树并比较名称:

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(); }
}