How can I add new root element to a C# XmlDocument

2019-06-18 05:15发布

问题:

I have, outside of my control, an XmlDocument which has a structure like the following:

<parent1>
...minor amount of data...
</parent1>

I have another XmlDocument, also outside of my control, which has the following structure:

<parent2>
..very large amount of data...
</parent2>

I need an XmlDocument in the format:

<parent1>
...minor amount of data...
<parent2>
..very large amount of data...
</parent2>
</parent1>

I don't want to make a copy of parent2. How can I get the structure I need, without copying parent2? I believe this means

oParent1.DocumentElement.AppendChild(oParent1.ImportNode(oParent2.DocumentElement, true));

is out of the question.

Any good solutions out there?

回答1:

Just remove the DocumentElement from the parent2 XmlDocument, then append the imported parent1 node to the XmlDocument (directly -- NOT to the DocumentElement) and re-append the removed parent2 node to the imported parent1 node:

var p1node = oParent2.ImportNode(oParent1.DocumentElement, true);
var p2node = oParent2.RemoveChild(oParent2.DocumentElement);

oParent2.AppendChild(p1node);
p1node.AppendChild(p2node);