我有以下XML示例,我需要一个XPath查询来仅 返回node1
和node3
。
<root>
<node1 />
<node2 anyAttribute="anyText" />
<node3> </node3>
<node4>anyText</node4>
<node5>
<anyChildNode />
</node5>
</root>
换句话说,XPath查询返回所有具有(同时)具有以下功能的节点:
我发现了一些解决方案(1和2),但一次仅适用于以上几点之一:
/root/node()[not(node())]
测试和工作/root/node()[not(@*)]
测试和工作/root/node()[string-length(normalize-space(text())) = 0]
3。-不工作(不知道为什么)是的,我知道,我可以将上面的3个变体一起使用,但是我想避免使用它,我认为仅搜索空节点/元素应该有一种简单的方法,或者?
我还限于xPath 1.0
on .NET
,因为在支持较新版本方面没有任何进展。
这个XPath
/root/*[not(@* or * or text()[normalize-space()])]
将仅根据要求选择node1
和node3
。
说明:选择所有没有作为属性()或元素()或非空白文本()的子元素的元素(请注意与node的区别)。root
@*
*
text()[normalize-space()]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句