3 回答
TA贡献1856条经验 获得超17个赞
在 C# 中的一种方法是:
var x = XElement.Parse(@"<Root type=""1"">
<A></A>
<B>
<B1>
<B12/>
<B13/>
</B1>
<B2>
123
<B21></B21>
</B2>
<B3 type=""3"">
<B4/>
</B3>
</B>
<C/>
</Root>");
foreach(XElement child in x.Descendants().Reverse())
{
if(!child.HasElements && string.IsNullOrEmpty(child.Value) && !child.HasAttributes)
child.Remove();
}
TA贡献1911条经验 获得超7个赞
使用正则表达式可以轻松完成:
string xml = @"<Root type=""1"">
< A ></ A >
< B >
< B1 >
< B12 />
< B13 />
</ B1 >
< B2 >
123
< B21 ></ B21 >
</ B2 >
< B3 type = ""3"" >
< B4 />
</ B3 >
</ B >
< C />
</ Root > ";
xml = Regex.Replace(xml, @"<.+?/>", "");
xml = Regex.Replace(xml, @"<(.+?)>\s*</\1>", "");
TA贡献1772条经验 获得超6个赞
在 SQL Server 中执行此操作的最简单方法。
SET @xml.modify('
delete //*[not(node()) and not(./@*)]
');
SELECT @xml.query('//*[not(node()) and not(./@*)]')
SET @xml.modify('
delete //*[not(node()) and not(./@*)]
');
SELECT @xml.query('//*[not(node()) and not(./@*)]')
SET @xml.modify('
delete //*[not(node()) and not(./@*)]
');
SELECT @xml.query('//*[not(node()) and not(./@*)]')
SET @xml.modify('
delete //*[not(node()) and not(./@*)]
');
SELECT @xml.query('//*[not(node()) and not(./@*)]')
我还可以选择我忽略/删除的所有节点。
- 3 回答
- 0 关注
- 358 浏览
添加回答
举报