Сравнение XML-файлов - PullRequest
1 голос
/ 10 мая 2011

Есть ли способ сравнить два XML-файла в C #? Я только хочу сравнить узлы первого файла с узлами второго файла. Я не хочу добавлять отсутствующие узлы.

Есть ли способ сделать это?

Вот что я пробовал:

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> - корневой узел в обоих файлах.

1 Ответ

1 голос
/ 10 мая 2011

Если вы просто хотите сравнить содержимое файла (включая, например, отступ), вы можете сделать следующее:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...