XML 文件比较

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

有没有办法比较C#中的两个XML文件?我只想将第一个文件的节点与第二个文件的节点进行比较。我不想附加缺少的节点。

有什么办法可以做到这一点吗?

这是我尝试过的:

var docA = XDocument.Parse(@"<mind_layout></mind_layout>");
var docB = XDocument.Parse(@"<mind_layout></mind_layout>");
var rootNameA = docA.Root.Name;
var rootNameB = docB.Root.Name;
var equalRootNames = rootNameB.Equals(rootNameA);
var descendantsA = docA.Root.Descendants();
var descendantsB = docB.Root.Descendants();
for (int i = 0; i < descendantsA.Count(); i++)
{
    var descendantA = descendantsA.ElementAt(i);
    var descendantB = descendantsB.ElementAt(i);
    var equalChildNames = descendantA.Name.Equals(descendantB.Name);
    var valueA = descendantA.Value;
    var valueB = descendantA.Value;
    var equalValues = valueA.Equals(valueB);
}

其中<mind_layout>是两个文件中的根节点。

XML 文件比较

如果您只想比较文件内容(例如,包括缩进),您可以执行以下操作:

if (File.ReadAllText(@"C:'path'to'file1.xml") == File.ReadAllText(@"C:'path'to'file2.xml"))
{
    // Same TEXT content
}

(警告:这不是您可以做的最优化的检查!

如果要比较 XML 内容(无论格式如何),可以执行以下操作:

var doc1 = XDocument.Load(File.OpenRead(@"C:'path'to'file1.xml"));
var doc2 = XDocument.Load(File.OpenRead(@"C:'path'to'file2.xml"));
if (XDocument.DeepEquals(doc1, doc2))
{
    // Same XML content
}