删除空的XML标记 [英] Remove empty XML tags

查看:238
本文介绍了删除空的XML标记的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要寻找能有效去除空标签,从XML一个不错的办法。你有什么建议吗?正则表达式?的XDocument? XmlTextReader的?

例如,

 常量字符串原=
    @< XML版本=1.0编码=UTF-16,&GT?;
    <宠物>
        <猫>汤姆< /猫>
        <猪/>
        <狗>小狗< /狗>
        <蛇>< /蛇>
        <大象>
            < africanElephant>< / africanElephant>
            < asianElephant> Biggy< / asianElephant>
        < /大象>
        < TIGER>
            <虎伍兹>< /虎伍兹>
            < americanTiger>< / americanTiger>
        < / TIGER>
    < / PET>中;
 

将变成:

 常量字符串预计=
    @< XML版本=1.0编码=UTF-16,&GT?;
        <宠物>
        <猫>汤姆< /猫>
        <狗>小狗< /狗>
        <大象>
            < asianElephant> Biggy< / asianElephant>
        < /大象>
    < / PET>中;
 

解决方案

加载你原来成的XDocument ,并使用以下code给你想要的输出:

  VAR文件= XDocument.Parse(原件);
document.Descendants()
        。凡(E => e.IsEmpty || String.IsNullOrWhiteSpace(e.Value))
        卸下摆臂();
 

I am looking for a good approach that can remove empty tags from XML efficiently. What do you recommend? Regex? XDocument? XmlTextReader?

For example,

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>";

Could become:

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

解决方案

Loading your original into an XDocument and using the following code gives your desired output:

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

这篇关于删除空的XML标记的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆