【发布时间】:2021-06-11 03:44:18
【问题描述】:
我有如下的 XML 代码块(它是数百行类似行的一部分..):
<specs>
<spec name='fald' value = '100'>
<name></name>
<value></value>
</spec>
</specs>
我需要转换如下代码:
<specs>
<spec name ='fald' value = '100'/>
</specs>
使用以下代码我可以删除子节点:
foreach (XElement child in doc.Descendants().Reverse())
{
if (child.HasAttributes)
{
foreach (var attribute in child.Attributes())
{
if (string.IsNullOrEmpty(attribute.Value) && string.IsNullOrEmpty(child.Value))
child.Remove();
}
}
}
但是这个过程也会删除父节点('spec'),预计会在那里发生。任何帮助表示赞赏,谢谢...
【问题讨论】:
-
您粘贴的代码是否正确?您的代码 sn-p 不会删除任何元素:请参阅 this fiddle
-
另外,您能否用几句话描述您想要的结果中的规则是什么?是规则吗?即“如果一个 spec 元素的 name 和 value 属性非为空,则删除它的子元素”?
-
@Xerillio 它删除了 '
' 因为该子节点没有属性也没有值,也删除了下面的子节点,但随后节点 'spec' 也消失了......
标签: c# xmldocument xelement