Best way to compare XML in C#
<p>I'm looking for the best way to compare two XML files for difference using C#. Like say for example if I have two XMLs A and B like this:</p>

<p><strong>XML A</strong></p>

<pre><code>&lt;data:TR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pd="http://www.ascentn.com/bpm/XMLSchema"&gt;
  &lt;data:processFields /&gt;
  &lt;data:formFields&gt;
    &lt;data:TextBox1&gt;111&lt;/data:TextBox1&gt;
    &lt;data:TextBox2&gt;222&lt;/data:TextBox2&gt;
    &lt;data:TextBox3&gt;3333&lt;/data:TextBox3&gt;
    &lt;data:Repeat1_Repeat&gt;
      &lt;data:Repeat1&gt;
        &lt;data:TextBox4&gt;444&lt;/data:TextBox4&gt;
        &lt;data:TextBox5&gt;555&lt;/data:TextBox5&gt;
      &lt;/data:Repeat1&gt;
    &lt;/data:Repeat1_Repeat&gt;
  &lt;/data:formFields&gt;
&lt;/data:TR&gt;
</code></pre>

<p><strong>XML B</strong></p>

<pre><code>&lt;data:TR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pd="http://www.ascentn.com/bpm/XMLSchema"&gt;
  &lt;data:processFields /&gt;
  &lt;data:formFields&gt;
    &lt;data:TextBox1&gt;111&lt;/data:TextBox1&gt;
    &lt;data:TextBox2&gt;aaa&lt;/data:TextBox2&gt;
    &lt;data:TextBox3&gt;3333&lt;/data:TextBox3&gt;
    &lt;data:Repeat1_Repeat&gt;
      &lt;data:Repeat1&gt;
        &lt;data:TextBox4&gt;bbb&lt;/data:TextBox4&gt;
        &lt;data:TextBox5&gt;555&lt;/data:TextBox5&gt;
      &lt;/data:Repeat1&gt;
      &lt;data:Repeat1&gt;
        &lt;data:TextBox4&gt;ccc&lt;/data:TextBox4&gt;
        &lt;data:TextBox5&gt;ddd&lt;/data:TextBox5&gt;
      &lt;/data:Repeat1&gt;
    &lt;/data:Repeat1_Repeat&gt;
  &lt;/data:formFields&gt;
&lt;/data:TR&gt;
</code></pre>

<p>I'm looking to get only the different between the two XML files, like in this case it would be TextBox2 and TextBox4 and one full node for Repeat1_Repeat.</p>

<p>Is there a easy way to get this? Maybe use some framework? I'm using .NET 4.5.2 so anything recent would work too!</p>

<p>Thanks!</p>

<p>EDIT : Oh and also, I need it to work for n-level of nesting.</p>