我有兩個XML,用戶編輯它們之前和之後。我需要檢查用戶是否只添加了新元素,但沒有刪除或更改舊元素。C#XML Diffing算法
有人可以向我建議一個很好的算法來做比較嗎?
Ps: 我的XML有一個非常平凡的模式,它們只用一種天真的方式表示一個對象的結構(帶有嵌套對象)。 很少有合法的標籤,<對象>標籤只能包含<名>標籤,<型>標籤或<列表>標籤。 <名稱>和<類型>標記只能包含一個字符串; <列表>標記可以包含<名稱>標記和單個<對象>標記(表示列表中對象的結構)。 <這個字符串名稱>標籤可以自由選擇,<類型的字符串>可以是「string」,「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 2015-03-02 23:14:20