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

use*_*272 3 c# linq linq-to-xml

这是我的XML,

<A>
    <B  id="ABC">
      <C name="A" />
      <C name="B" />     
    </B>
    <X>
     <B id="ZYZ">
      <C name="A" />
      <C name="B" />
     </B>
    </X>
</A>
Run Code Online (Sandbox Code Playgroud)

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

XDocument doc = XDocument.Load("D:\\parsedXml.xml");
doc.Descendants("A").Descendants("X").Remove();
Run Code Online (Sandbox Code Playgroud)

但正在删除整个<X>块.

预期产量:

<A>
    <B  id="ABC">
      <C name="A" />
      <C name="B" />     
    </B>
     <B id="ZYZ">
      <C name="A" />
      <C name="B" />
     </B>
</A>
Run Code Online (Sandbox Code Playgroud)

L.B*_*L.B 5

var x = doc.Root.Element("X");
x.Remove();
doc.Root.Add(x.Elements());
Run Code Online (Sandbox Code Playgroud)

  • 我建议添加到前一个`x`的父元素. (2认同)
  • ...还支持多个`X`元素. (2认同)