如何使用C#中的LINQ从XML文件中删除特定节点

时间:2010-06-29 11:43:46

标签: c# xml

我有一个xml文件(Sample.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> 

我需要删除元素“Child”,如果它直接位于“RootElement”

请给我一个XML到LINQ approch来做这个

2 个答案:

答案 0 :(得分:2)

您需要遍历节点并将其删除,如下所示:

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

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

您必须调用ToArray,否则您将在枚举时修改该集合。

答案 1 :(得分:1)

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