2016-05-30 70 views
1

我有下面的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"))); 

回答

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