如何从已加载的XDocument中删除特定节点?我的XML文档如下所示:
<Snippets>
<Snippet name="if">
<SnippetCode>
if (condition)
{
}
</SnippetCode>
</Snippet>
<Snippets>
<Snippet name="foreach">
<SnippetCode>
...
</SnippetCode>
</Snippet>
....
</Snippets>
所以说如果我只想删除foreach片段,我该怎么做?我尝试了doc.Descendants.Remove(),但它对我不起作用(节点没有被删除)。
编辑 - 在该注释中,我如何重命名代码段并通过代码编辑代码段?我还没有调查过,但一些帮助将不胜感激。
答案 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");