2010-06-29 179 views
2

我有一个XML文件(sample.xml中),它具有以下结构如何在C#中使用LINQ的XML文件中删除特定节点

<RootElement>  
     <Child Name="FirstChild" Start="1" End="2"/> 
     <Child Name="SecondChild" Start="0" End="2"/>   
     <Child Name="ThirdChild" Start="1" End="2"/>    
     <Child Name="FourthChild" Start="0" End="2"/>    
     <Child Name="FifthChild" Start="0" End="2"/>    
     <Child Name="SixthChild" Start="1" End="2"/> 
     <MatchedChilds> 
      <Child Name="FirstChild" /> 
      <Child Name="SecondChild" /> 
      <Child Name="ThirdChild" /> 
      <Child Name="FourthChild" /> 
      <Child Name="FifthChild" /> 
      <Child Name="SixthChild" /> 
    </MatchedChilds> 
</RootElement> 

我需要删除,如果它的元素“孩子”是直属“rootElement的”

请给我一个XML到LINQ计算策略做这个

回答

1
 XDocument X_DOC = XDocument.Load(Application.StartupPath + "\\Sample.xml"); 
     X_DOC.Root.Elements("Child").Remove(); 
     X_DOC.Save(Application.StartupPath + "\\Sample.xml"); 
+0

你应该调用'Path.Combine'。另外,您不需要“Where”呼叫。 – SLaks 2010-06-29 12:00:03

+0

@ SLaks:请发表示例代码 – 2010-06-29 12:02:22

+0

@ SLaks:谢谢.....编辑于(第2行)。谨发帖子为 Path.Combile – 2010-06-29 12:07:56

2

您需要遍历所有的节点并删除它们,就像这样:

foreach(var child in root.Elements("Child").ToArray()) 
    child.Remove(); 

Elements调用将返回您调用它的元素的所有直接子元素;它不会归还孙子;

您必须致电ToArray,否则在列举它时您将修改该集合。

相关问题