Algoritmo de difusão XML em C #

Eu tenho dois XML, antes e depois que o usuário os editou. Preciso verificar se o usuário adicionou apenas novos elementos, mas não excluiu ou alterou os antigos.

Alguém pode me sugerir um bom algoritmo para fazer essa comparação?

Ps: Meu XML tem um esquema muito trivial, eles representam apenas a estrutura de um objeto (com objetos aninhados) de uma maneira ingênua. Existem poucas tags permitidas, a tag <object> pode conter apenas a tag <name>, <type> ou a <list>. A tag <name> e <type> podem conter apenas uma sequência; Em vez disso, a tag <list> pode conter uma tag <name> e uma única tag <object> (representando a estrutura dos objetos na lista). A string na tag <name> pode ser escolhida livremente; a string na tag <type> pode ser apenas "string", "int", "float", "bool", "date" ou "composite".

Aqui está um exemplo:

 <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>

questionAnswers(2)

yourAnswerToTheQuestion