我有以下XMl文件,我想提取它的一些节点。我想提取两组节点。
<root >
<comment>
// something here
</comment>
<define>
// something here
</define>
<scrp>
// something here
</scrp>
<files >
<file id ="1" Name="S1">
<file id ="2" Name="S11">
<file id ="3" Name="S111" />
<file id ="4" Name="S112" />
<file id ="5" Name="S1121" />
</file >
<file id ="6" Name="S12" />
</file >
</files>
</root >
我想将所有节点files
和scrp
提取到新的XML
文件中。我做了如下代码,但它只保存files
节点而不是节点files
和scrp
。我可以请你帮忙吗?
var doc = XDocument.Load(xmlfile);
XElement files = doc.Descendants("files").FirstOrDefault();
XElement root = doc.Element("root");
doc.Element("root").ReplaceWith(new XElement("root", new object[] { pack.Attributes(), files }));
doc.Root.ReplaceNodes(new XElement("files", doc.Descendants("file")));
答案 0 :(得分:0)
如果需要用特定节点替换根节点的全部内容,那么doc.Root上的ReplaceAll应该可以工作。这是你想要实现的目标吗?
var doc = XDocument.Load(xmlfile);
XElement files = doc.Descendants("files").FirstOrDefault();
XElement scrp = doc.Descendants("scrp").FirstOrDefault();
doc.Root.ReplaceAll(scrp, files);