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

Adding a root xml element before another root C#

我有一个 xml 文档如下:

-<Machines>


-<Machine>


-<InstallPath >

<Component "/>

<Component "/>

<Component "/>

<Component "/>

<Component "/>


</InstallPath>

</Machine>
</Machines>

我需要使用 C# 在 Machines 之前添加一个根 Manifest 元素。

我尝试了以下代码,但收到一条错误消息,指出文档构造不正确。

这是我正在尝试的代码:

using (XmlReader reader = cmd.ExecuteXmlReader())
                    {
                        XDocument doc = XDocument.Load(reader);
                        doc.Root.AddBeforeSelf(new XElement("Manifest"));
                        string path = outputPath + "\" + xmlFileName;

                        doc.Save(path);    
                    }

XML 只能有一个 "root" 元素。所以你想要的结构是无效的:

<Manifest>
    ...
</Manifest>
<Machines>
    ...
</Machines>

如果您想要两个同级元素,则需要将它们包含在另一个父元素中。

I want the Manifest element to surround the Machines element and the Machines element to contain the rest of the xml

然后你需要创建一个新的文档:

XDocument newDoc = new XDocument(new XElement("Manifest", doc.Root));

这将创建一个带有 Manifest 根标签的新 XDocument,其内容是原始文档的根(和内容)。

用当前的 Root 创建一个新元素并将其放入新的 XDocument:

XDocument newDoc = new XDocument(new XElement("Manifest", doc.Root));