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

Как сравнить элементы из двух разных XML-файлов в C #? Необходимо сравнивать только имя элемента, а не значение элемента.

Я использую:

XDocument file1 = XDocument.Load(dest_filename);
XDocument file2 = XDocument.Load(source_filename);

if (file1.Nodes().Intersect(file2.Nodes()).Count() > 0)
{
    MessageBox.Show("hey i popped up");
}

но сравнивает и значение, которое я не хочу сравнивать ..

1 Ответ

0 голосов
/ 10 мая 2011

Учитывая file1.xml:

<root>
  <a></a>
  <b></b>
  <c></c>
</root>

и file2.xml:

<root>
  <a></a>
  <b></b>
  <b></b>
  <c></c>
  <d></d>
</root>

Следующий код приведет к четырем окнам сообщений (для узлов a, b, b и c)

XDocument doc = XDocument.Load(System.IO.Path.GetFullPath("file1.xml"));
XDocument doc2 = XDocument.Load(System.IO.Path.GetFullPath("file2.xml"));

var matches = from a in doc.Element("root").Descendants()
            join b in doc2.Element("root").Descendants() on a.Name equals b.Name
            select new { First = a, Second = b };

foreach (var n in matches)
    MessageBox.Show(n.First.ToString() + " matches " + n.Second.ToString());

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...