XDocument删除节点

我有一个XML文件

    #text_filter,#text_filter,#text_filter,#text_filter,#text_filter,#text_filter     recinfoArea   Id NazovProjektu   

我想删除beforeInit和afterInit元素。

我试过了

 xml.Elements().Where(e=>e.Name == "beforeInit" || e.Name == "afterInit").Remove(); 

但没有运气。

如果你想删除每个出现的beforeInit或afterInit你可以使用

 xml.Descendants().Where(e=>e.Name == "beforeInit" || e.Name == "afterInit").Remove(); 

(后代而不是元素)。 elements()返回直接子节点的列表,而后代返回每个节点。

如果xml是XElement,请尝试:

 xml.Element("head").Elements().Where(e=>e.Name == "beforeInit" || e.Name == "afterInit").Remove(); 

否则,如果它是XDocument:

 xml.Root.Element("head").Elements().Where(e=>e.Name == "beforeInit" || e.Name == "afterInit").Remove(); 

现在的方式是,它设置为在查找子元素,而不是 。 换句话说,Elements()仅返回节点的直接子节点。 如果你想要所有的后代,无论什么级别,你都想要后代()。