What is the best way in C# to get a collection of objects representing the changes between two XML texts, e.g.:
First:
<Customer>
<Id>1</Id>
<FirstName>Angie</FirstName>
<LastName>Jones</LastName>
<ZipCode>23434</ZipCode>
<Contracts>
<Contract>
<Id>234</Id>
<Title>Test Contract 1</Title>
</Contract>
</Contracts>
</Customer>
Second:
<Customer>
<Id>1</Id>
<FirstName>Angie</FirstName>
<MiddleName>S.</MiddleName>
<LastName>Jones-Smith</LastName>
<Contracts>
<Contract>
<Id>234</Id>
<Title>Test Contract 1</Title>
</Contract>
<Contract>
<Id>534</Id>
<Title>Test Contract 2</Title>
</Contract>
</Contracts>
</Customer>
Changes:
Kind: Node: Before After
-------- ---------- -------- ----------------
Change Customer/LastName Jones Jones-Smith
Addition Customer/MiddleName S.
Deletion Customer/ZipCode
Addition Customer/Contracts[1] <Contract>
<Id>534</Id>
<Title>Test Contract 2</Title>
</Contract>
The point is to then pass the changes as a collection of objects onto a GUI which can appropriately display them.
What is the best way to go about this, i.e. structure the class(es) that represents the changes and traverse/examine the XML in order to identify the changes most accurately?
This appears to be a duplicate question for: Xml Comparison in C#
Have a look there, see if it helps.
Quote:
I've got an answer by Martin Honnen in XML and the .NET Framework MSDN Forum. In short he suggests to use XQuery 1.0's deep-equal function and supplies some C# implementations. Seems to work.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With