有没有办法比较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>
是两个文件中的根节点。
答案 0 :(得分:1)
如果你只是想比较文件内容(包括例如缩进),你可以这样做:
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
}