XDocument删除节点

时间:2010-12-19 04:40:47

标签: c# linq-to-xml code-snippets

如何从已加载的XDocument中删除特定节点?我的XML文档如下所示:

<Snippets>
  <Snippet name="if">
    <SnippetCode>      
 if (condition)
 {
 }
    </SnippetCode>
</Snippet>

<Snippets>
  <Snippet name="foreach">
    <SnippetCode>      
 ...
    </SnippetCode>
</Snippet>

....

</Snippets>

所以说如果我只想删除foreach片段,我该怎么做?我尝试了doc.Descendants.Remove(),但它对我不起作用(节点没有被删除)。

编辑 - 在该注释中,我如何重命名代码段并通过代码编辑代码段?我还没有调查过,但一些帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

未经测试,但这应该有用。如果你想解释它,请告诉我。

xdoc.Descendents("Snippet").Where(xe => xe.Attribute("name") != null 
    && xe.Attribute("name").Value == "foreach").Single().Remove()

答案 1 :(得分:2)

你可以做到这一点,最后你应该保存文件:

       XDocument doc = XDocument.Load("XmlFile1.xml");
        doc.Descendants("Snippet").Where(p => p.Attribute("name") != null 
                                        && p.Attribute("name").Value == "foreach")
                                        .Remove();
        doc.Save("XmlFile1.xml");