0

我有一个如下的 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);    
                    }
4

2 回答 2

1

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

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

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

我希望 Manifest 元素围绕 Machines 元素和 Machines 元素以包含 xml 的其余部分

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

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

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

于 2017-03-23T16:07:58.053 回答
1

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

XDocument newDoc = new XDocument(new XElement("Manifest", doc.Root));
于 2017-03-23T16:22:18.987 回答