在另一个根C#之前添加根xml元素

时间:2017-03-23 15:54:06

标签: c# xml xmlroot

我有一个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);    
                    }

2 个答案:

答案 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));