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?