Алгоритм C # XML Diffing
У меня есть два XML, до и после того, как пользователь их отредактировал. Мне нужно убедиться, что пользователь только добавил новые элементы, но не удалил и не изменил старые.
Кто-нибудь может предложить мне хороший алгоритм для такого сравнения?
PS: Мой XML имеет очень тривиальную схему, они только наивно представляют структуру объекта (с вложенными объектами). Допустимых тегов немного, тег <object> может содержать только тег <name>, тег <type> или тег <list>. Тег <name> и <type> может содержать только строку; Вместо этого тег <list> может содержать тег <name> и один тег <object> (представляющий структуру объектов в списке). Строка в теге <name> может быть выбрана произвольно, вместо этого строка в теге <type> может быть только «string», «int», «float», «bool», «date» или «смесь».
Вот пример:
<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>