c# - 移除空的 XML 标签

标签 c# .net xml linq-to-xml

我正在寻找一种可以有效地从 XML 中删除空标记的好方法。您有什么推荐的吗?正则表达式? X文档? XML文本阅读器?

例如,

const string original = 
    @"<?xml version=""1.0"" encoding=""utf-16""?>
    <pet>
        <cat>Tom</cat>
        <pig />
        <dog>Puppy</dog>
        <snake></snake>
        <elephant>
            <africanElephant></africanElephant>
            <asianElephant>Biggy</asianElephant>
        </elephant>
        <tiger>
            <tigerWoods></tigerWoods>       
            <americanTiger></americanTiger>
        </tiger>
    </pet>";

可能变成:

const string expected = 
    @"<?xml version=""1.0"" encoding=""utf-16""?>
        <pet>
        <cat>Tom</cat>
        <dog>Puppy</dog>        
        <elephant>                                              
            <asianElephant>Biggy</asianElephant>
        </elephant>                                 
    </pet>";

最佳答案

将原始文件加载到 XDocument 中并使用以下代码提供所需的输出:

var document = XDocument.Parse(original);
document.Descendants()
        .Where(e => e.IsEmpty || String.IsNullOrWhiteSpace(e.Value))
        .Remove();

关于c# - 移除空的 XML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7318408/

相关文章:

javascript - 使用 XML 文件的标签和属性在 PHP 文档中循环不起作用

c# - 使用 Xamarin 进行 Sha512 哈希处理

c# - 获取存储在存储二进制数据的数据列中的字节长度

c# - 通过 .NET 确定现有的本地 Windows 帐户

Func 上的 C# 可选参数丢失泛型类型推断

java - 有没有办法更改上下文操作栏的背景颜色?

c# - 更改文件名以在 MVC3 中下载

c# - StructLayoutAttribute.Pack 困惑

c# - 如何在 C# 中将持久实体转换为具体类型

c# - 先逻辑,后 WCF 安全?