Xpath - 如何排除包含属性的节点?

时间:2018-01-08 19:44:10

标签: xml xpath

我有一个xpath来获取文本节点中的所有文本,如下所示:

<text>I want this text</text>

但我不想从包含如下属性的节点获取文本:

<text name="contact">I DO NOT want this text</text>

排除具有&#34;名称&#34;的文本节点。属性应该有效,但我更喜欢排除具有任何属性的文本节点更健壮。有没有办法做到这一点?

下面的Xpath可以抓取所有文本,除了它还可以抓取我想要排除的内容。

//*[local-name()='text'][string-length(normalize-space(.))>0]

2 个答案:

答案 0 :(得分:1)

not(@*)谓词应该可以解决问题:

//*[local-name()='text' and not(@*)][string-length(normalize-space(.))>0]

这应该只返回没有任何属性的text个节点

答案 1 :(得分:1)

  

排除具有任何属性的文本节点更健壮

xpath 表达式:

//text[count(@*)=0]