我有一个xml文档:
-<Machines>
-<Machine>
-<InstallPath >
<Component "/>
<Component "/>
<Component "/>
<Component "/>
<Component "/>
</InstallPath>
</Machine>
</Machines>
我需要在使用C#实现机器之前添加根文件元素。
我尝试了以下代码,并且收到错误消息,指出文档构造不正确。
以下是我正在尝试的代码:
using (XmlReader reader = cmd.ExecuteXmlReader())
{
XDocument doc = XDocument.Load(reader);
doc.Root.AddBeforeSelf(new XElement("Manifest"));
string path = outputPath + "\\" + xmlFileName;
doc.Save(path);
}
答案 0 :(得分:1)
XML只能有一个“root”元素。所以你想要的结构是无效的:
<Manifest>
...
</Manifest>
<Machines>
...
</Machines>
如果你想要两个兄弟元素,它们需要包含在另一个父元素中。
我希望Manifest元素包围Machines元素,Machines元素包含xml的其余部分
然后您需要创建新文档:
XDocument newDoc = new XDocument(new XElement("Manifest", doc.Root));
这将创建一个带有XDocument
根标记的新Manifest
,其内容是原始文档的根(和内容)。
答案 1 :(得分:1)
使用当前Root
创建一个新元素并将其放入新的XDocument
:
XDocument newDoc = new XDocument(new XElement("Manifest", doc.Root));