有人可以解释一下下面的Xpath表达式是什么意思吗?
//node()[not(*)][not(normalize-space())]
//node()[not(*)][not(normalize-space())][not(boolean(@Key))]
//node()[not(text())]
我理解//node()
表示任何节点,但不确定使用以下表达式。
答案 0 :(得分:4)
//node()[not(*)][not(normalize-space())]
文档中任何位置的所有元素,文本,注释和处理指令节点,它们没有子元素节点且其字符串值为空或完全由空格组成
//node()[not(*)][not(normalize-space())][not(boolean(@Key))]
如上所述,附加条件是没有@Key属性。最后一个谓词写得很糟糕:它可以缩短为[not(@Key)]
而不改变其含义。
//node()[not(text())]
文档中任何位置没有子文本节点的所有元素,文本,注释和处理指令节点。
答案 1 :(得分:0)
更新(感谢@Michael Kay评论)
第一个:
//node()
文档中的所有节点(包括文本,注释和处理指令,但不包括属性)
[not(*)]
没有任何子元素节点
[not(normalize-space())]
没有任何文本内容(除了空格)。
第二个: 与第一个相同,但另外一个:
[not(boolean(@Key))]
节点没有属性Key
更新:
对于第三个看看e.g. this
在您的示例中,这也将忽略具有任何文本内容(甚至是空格)的节点