combine two xml_docs C# xmlDocument

I have been using the following SO, How to merge two XmlDocuments in C#, to try and merge two sample xml files into one. Essentially here are my two xml files

test1.xml:

<root>
    <Name>
        <id>4</id>
        <First_name>Tony</First_name>
        <last_name>""</last_name>
    </Name>
    <Name>
        <id>6</id>
        <First_name>Donny</First_name>
        <last_name>Test</last_name>
        <middle_name>Ward</middle_name>
    </Name>
</root>

And test2.xml

<root>
    <Name>
        <id>1</id>
        <First_name>Nick</First_name>
        <last_name>Tester</last_name>
    </Name>
    <Name>
        <id>2</id>
        <First_name>Lauren</First_name>
        <last_name>MsTester</last_name>
    </Name>
</root>

I am using this code snippet it to merge the into the one file but the procedure is not actually combining them. I am a little knew to xmlDocument class and still trying to navigate this issue correctly.

Code:

XmlDocument xmlreader1 = new XmlDocument();
xmlreader1.Load("C:\\Temp\\test1.xml");
XmlDocument xmlreader2 = new XmlDocument();
xmlreader2.Load("C:\\Temp\\test2.xml");

foreach (XmlNode node in xmlreader2.DocumentElement.ChildNodes)
{
    XmlNode importedDocument = xmlreader1.ImportNode(node, true);
    xmlreader1.DocumentElement.AppendChild(importedDocument);
}

I believe this is correct to take each child node of root (in this case <name>) from test2.xml and append it to test1.xml. I have also tried as:

XmlNode importedDocument = xmlreader1.ImportNode(xmlreader2.DocumentElement, true);
xmlreader1.DocumentElement.AppendChild(importedDocument);

to no avail again any suggestions would be greatly appreciated.

Jon Skeet
people
quotationmark

It's not entirely clear what merge operations you need to perform - but if you just need to copy the root node's child elements, that's really simple with LINQ to XML:

XDocument doc1 = XDocument.Load("test1.xml");
XDocument doc2 = XDocument.Load("test2.xml");
doc1.Root.Add(doc2.Root.Elements());
doc1.Save("test3.xml");

This will not perform any actual merging though - if you have elements with the same ID in both files, you'll end up with both elements in the result, rather than one merged element.

Personally I always prefer using LINQ to XML over the old XmlDocument API - I would strongly recommend using it when you have the opportunity to do so.

people

See more on this question at Stackoverflow