如何提取XML文件的两个不同节点

时间:2016-05-30 08:02:14

标签: c# .net xml

我有以下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 >

我想将所有节点filesscrp提取到新的XML文件中。我做了如下代码,但它只保存files节点而不是节点filesscrp。我可以请你帮忙吗?

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")));

1 个答案:

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