c# - 如何使用 LINQ 删除没有其子节点的 Xelement?

标签 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>

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

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

但是正在删除整个 <X> 阻止。

预期输出:

<A>
    <B  id="ABC">
      <C name="A" />
      <C name="B" />     
    </B>
     <B id="ZYZ">
      <C name="A" />
      <C name="B" />
     </B>
</A>

最佳答案

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

关于c# - 如何使用 LINQ 删除没有其子节点的 Xelement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21730252/

相关文章:

c# - API Controller 的通用 ActionResult 返回类型

C# Linq 查找具有多个分组依据的重复项

c# - 是否可以使用 Linq 比较同一 IEnumerable 中的两个字段?

c# - 为什么在LINQ查询中调用方法时不能使用范围值的属性作为参数?

c# - 当我们有多个名称相同但属性不同的元素时,如何使用 Xdocument 从 xml 中删除元素

c# - 具有完整子结构的矩阵的 "Matrix decomposition"

c# - C# 中匿名 lambda 函数的 C++ 捕获子句等效项

c# - 为什么 XDocument.Parse 抛出 NotSupportedException?

c# - Linq to Xml 仅打印第一个后代值

c# - 检查数组是否排序的最快方法