I have an xml document that follows:
-<Machines>
-<Machine>
-<InstallPath >
<Component "/>
<Component "/>
<Component "/>
<Component "/>
<Component "/>
</InstallPath>
</Machine>
</Machines>
I need to add a root Manifest element before Machines pragmatically using C#.
I tried the following code and I get an error saying that the document is not properly constructed.
Here is the code I am trying:
using (XmlReader reader = cmd.ExecuteXmlReader())
{
XDocument doc = XDocument.Load(reader);
doc.Root.AddBeforeSelf(new XElement("Manifest"));
string path = outputPath + "\\" + xmlFileName;
doc.Save(path);
}
XML can only have one "root" element. So the structure you're wanting is not valid:
<Manifest>
...
</Manifest>
<Machines>
...
</Machines>
If you want two sibling elements, they would need to be contained in another parent element.
I want the Manifest element to surround the Machines element and the Machines element to contain the rest of the xml
Then you need to create a new document:
XDocument newDoc = new XDocument(new XElement("Manifest", doc.Root));
This creates a new XDocument
with a Manifest
root tag, whose content is the root (and contents) of the original document.