2017-03-23 40 views
0

我有如下的XML文档:添加根xml元素之前另一根C#

-<Machines> 


-<Machine> 


-<InstallPath > 

<Component "/> 

<Component "/> 

<Component "/> 

<Component "/> 

<Component "/> 


</InstallPath> 

</Machine> 
</Machines> 

我需要务实使用C#机之前添加一个根Manifest元素。

我试过下面的代码,我得到一个错误,说文档没有正确构造。

这里是我想要的代码:

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

         doc.Save(path);  
        } 

回答

1

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

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

如果你希望两个兄弟元素,他们将需要包含在另一个父元素。

我想要的清单元素包围的机器元件与机械元素包含XML的

然后,你需要创建一个文件的其余部分:

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

这会创建一个新的XDocument,其中Manifest根标记的内容是原始文档的根(和内容)。

+0

对不起林完全新的XML,我不想两个“根元素”我想manifest元素包围的机元素和Machines元素包含xml的其余部分(如果有意义的话) – Mattaceten

+0

因此,如果可以在Machines元素周围插入Manifest元素并将Manifest元素作为根,而不是理想的机器。 – Mattaceten

1

与当前Root创建一个新的元素,并把它放在一个新的XDocument

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