Сравните XML файлов, чтобы определить различия - PullRequest
0 голосов
/ 03 февраля 2020

Я искал, и хотя есть несколько вариантов, ни один из них не подходит для моей текущей проблемы.

Я получаю два XML файла, File1 и File2, которые имеют узлы "User" с дочерние узлы, детализирующие такие вещи, как имя, возраст, адрес и т. д. c. Оттуда мне нужно создать третий XML File3, который содержит исключительно поля, которые изменились между двумя при сохранении узла «name», чтобы определить, что изменение было сделано с этим пользователем.

Так что если я get:

File 1:
<users>
 <user>
  <name>Marco</name>
  <height>1,76</height>
  <address>C:/ Far-away 34</address>
  <mail>marco@marco</mail>
 </user>
</users>

File 2:
<users>
 <user>
  <name>Marco</name>
  <height>1,80</height>
  <address>C:/ Far-away 34</address>
  <mail></mail>
 </user>
</users>

Это должно выплюнуть XML с:

File 3:
<users>
 <user>
  <name>Marco</name>
  <height>1,80</height>
  <mail></mail>
 </user>
</users>

С одним из моих главных осложнений, что мне не сказали, какие узлы будут присутствовать (или или они не имеют дочерних узлов) кроме «name».

РЕДАКТИРОВАТЬ: пользователи отображаются только один раз, узлы могут быть в любом порядке, количество узлов не фиксировано.

1 Ответ

0 голосов
/ 03 февраля 2020

Вы можете использовать XElement class .

Десериализовать ваши XML-файлы в объекты XElement, а затем вы можете сравнить дочерние узлы один за другим.

Если вы знаете все возможные узлы, которые может появиться в этом XML, вы можете десериализовать этот XML непосредственно в C# объекты. Но с классом XElement вы можете реализовать более универсальное c решение.

...