如何在XPath中搜索空/空节点/元素?

特奥多尔·蒂特(Teodor Tite)

我有以下XML示例,我需要一个XPath查询来 返回node1node3

<root>
    <node1 />
    <node2 anyAttribute="anyText" />
    <node3> </node3>
    <node4>anyText</node4>
    <node5>
        <anyChildNode />
    </node5>
</root>

换句话说,XPath查询返回所有具有(同时)具有以下功能的节点:

  1. 没有属性
  2. 没有子节点
  3. 没有内容或仅包含空格的内容

我发现了一些解决方案(12),但一次仅适用于以上几点之一:

  • 为1.-/root/node()[not(node())]测试和工作
  • 为2--/root/node()[not(@*)]测试和工作
  • /root/node()[string-length(normalize-space(text())) = 0]3。-不工作(不知道为什么)

是的,我知道,我可以将上面的3个变体一起使用,但是我想避免使用它,我认为仅搜索空节点/元素应该有一种简单的方法,或者?


我还限于xPath 1.0on .NET,因为在支持较新版本方面没有任何进展

克休斯

这个XPath

/root/*[not(@* or * or text()[normalize-space()])]

将仅根据要求选择node1node3

说明:选择所有没有作为属性()或元素()或非空白文本()的元素的元素(请注意与node的区别)。root@**text()[normalize-space()]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章