c# - 删除没有后代的 XML 节点

标签 c# asp.net xml

我有一个 XML 文件。我想删除没有任何后代的 line_item 节点。

<root>
  <transaction>
    <type>regular</type>
    <number>746576</number>
    <customer>
      <mobile>5771070</mobile>
      <email />
      <name>abcd</name>
    </customer>
    <line_items>
      <line_item>
        <serial>8538</serial>
        <amount>220</amount>
        <description>Veggie </description>
        <qty>1</qty>
        <attributes />
      </line_item>
      <line_item />
      <line_item />
      <line_item />
      <line_item />
      <line_item>
        <serial>8543</serial>
        <description>Tax</description>
        <qty>1</qty>
        <value>42.78</value>
        <attributes />
      </line_item>
    </line_items>
    <associate_details>
      <code>660</code>
      <name>xyz</name>
    </associate_details>
  </transaction>
</root>

我正在使用 ASP.NET 4。现在我正在查找 line_item 节点并检查它是否有元素。

最佳答案

只是复制了 Alex Filipovici 的答案,稍作修改:

var xDoc = XDocument.Load("input.xml");
    xDoc.Descendants()
        .Where(d => d.Name.LocalName == "line_item" && !d.HasElements)
        .ToList()
        .ForEach(e => e.Remove());

关于c# - 删除没有后代的 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19681285/

相关文章:

c# - 批量生成随 secret 码

asp.net - 如果指定了 Z 后缀,为什么 Odata 会根据我的机器本地时间更改过滤器中的日期时间值?

C#快速/高效地压缩大量数据 block

C# Enum Flag - 两种绑定(bind)方式 - enum - class -enum

c# - [A]MySql.Data.MySqlClient.MySqlConnection 无法转换为 [B]MySql.Data.MySqlClient.MySqlConnection

c# - 在 ASP.Net 网站项目中混合使用 VB.Net 和 C# 代码?

xml - xpath 表达式 "@*"是什么意思?

c# - 从 XML 转换数组

android - 如何在android首选项中转义 '%'

c# - 启动保持事件状态的非阻塞线程的可能方法