代码之家  ›  专栏  ›  技术社区  ›  Thorin Oakenshield

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

  •  2
  • Thorin Oakenshield  · 技术社区  · 15 年前

    我有一个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的方法来做这个

    2 回复  |  直到 15 年前
        1
  •  2
  •   SLaks    15 年前

    您需要在节点上循环并删除它们,如下所示:

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

    这个 Elements

    你必须打电话 ToArray

        2
  •  1
  •   Thorin Oakenshield    15 年前
            XDocument X_DOC = XDocument.Load(Application.StartupPath + "\\Sample.xml");
            X_DOC.Root.Elements("Child").Remove();
            X_DOC.Save(Application.StartupPath + "\\Sample.xml");