This might be very problematic to do with a standard diff tool if the xml "nodes" are in any way similar. For example:
file1:
1 <node id="1" />
2 <node id="2a">
3 <content item="1"/>
4 <content item="2a"/>
5 </node>
6 <node id="3" />
file2:
1 <node id="1" />
2 <node id="2b">
3 <content item="1"/>
4 <content item="2b"/>
5 </node>
6 <node id="3" />
A standard diff tool is going to highlight lines 2 and 4 as needing to be merged, but even if you automatically add the lines from file2, you'll end up with an invalid xml file:
1 <node id="1" />
2 <node id="2a">
2 <node id="2b">
3 <content item="1"/>
4 <content item="2a"/>
4 <content item="2b"/>
5 </node>
6 <node id="3" />
You really need a diff/merge tool that is xml-aware. I found a description of one called XmlMerge, along with an example that shows it doing exactly what you're asking for. It's part of EL4J.
There is a dormant effort called XUpdate that has a fair amount of tools around it (both for generating the XUpdate diffs and for applying them).
There are also some .net classes that use a different foundation. You will need to do some scripting to use either of these systems I think.