У меня есть два XML, до и после того, как пользователь их редактировал. Мне нужно проверить, что пользователь добавил только новые элементы, но не удалил или не изменил старые.C# XML Diffing algorithm
Может ли кто-нибудь предложить мне хороший алгоритм для сравнения?
Пс: Мой XML имеет очень тривиальную схему, они представляют собой структуру объекта (с вложенными объектами) наивным образом. Есть несколько разрешенных тегов, < объекта > тег может только содержит <Name> тега, < типа > тега или < списка > тега. < имя > и < тип > тег может содержать только строку; <list> тег вместо этого может содержать < имя > тег и один объект < объект > теги (представляющие структуру объектов в списке). Строка в значении < > может быть свободно выбрана, строка в < Тип > тегом вместо этого могут быть только «строка», «int», «float», «bool», «date» или «composite».
Вот пример:
<object>
<name>Person</name>
<type>composite</type>
<object>
<name>Person_Name</name>
<type>string</type>
</object>
<object>
<name>Person_Surname</name>
<type>string</type>
</object>
<object>
<name>Person_Age</name>
<type>int</type>
</object>
<object>
<name>Person_Weight</name>
<type>float</type>
</object>
<object>
<name>Person_Address</name>
<type>string</type>
</object>
<object>
<name>Person_BirthDate</name>
<type>date</type>
</object>
<list>
<name>Person_PhoneNumbers</name>
<object>
<name>Person_PhoneNumber</name>
<type>composite</type>
<object>
<name>Person_PhoneNumber_ProfileName</name>
<type>string</type>
</object>
<object>
<name>Person_PhoneNumber_CellNumber</name>
<type>string</type>
</object>
<object>
<name>Person_PhoneNumber_HomeNumber</name>
<type>string</type>
</object>
<object>
<name>Person_PhoneNumber_FaxNumber</name>
<type>string</type>
</object>
<object>
<name>Person_PhoneNumber_Mail</name>
<type>string</type>
</object>
<object>
<name>Person_PhoneNumber_Social</name>
<type>string</type>
</object>
<object>
<name>Person_PhoneNumber_IsActive</name>
<type>bool</type>
</object>
</object>
</list>
</object>
Как отредактировать свой XML-документ? Почему бы не дать им интерфейс, который позволяет добавлять новые узлы? – jac