如何使用LINQ删除没有子节点的Xelement?

这是我的XML

             

我正在使用以下代码删除节点而不删除其下降/子节点,

 XDocument doc = XDocument.Load("D:\\parsedXml.xml"); doc.Descendants("A").Descendants("X").Remove(); 

但是删除整个块。

预期产量:

           

 var x = doc.Root.Element("X"); x.Remove(); doc.Root.Add(x.Elements()); 

已批准的答案将始终将子项添加到文档的末尾。 如果您需要删除文档中间的条目并将孩子留在他们所在的位置,请执行以下操作:

 x.AddAfterSelf(x.Nodes()); x.Remove(); 

以下代码删除所有节点,使子节点保持在正确的位置:

 while (doc.Descendants("x").Count() > 0) { var x = doc.Descendants("x").First(); x.AddAfterSelf(x.Nodes()); x.Remove(); }