XPath:在任意数量的嵌套元素中匹配文本的方法?

Ste*_*ieD 4 html xml xpath

在这种情况下,一个 XPath 表达式是否可以<a>使用元素中的文本匹配所有以下元素"Link"

例子:

  1. <a href="blah">Link</a>
  2. <a href="blah"><span>Link</span></a>
  3. <a href="blah"><div>Link</div></a>
  4. <a href="blah"><div><span>Link</span></div></a>

kjh*_*hes 7

这个简单的 XPath 表达式,

//a[contains(., 'Link')]
Run Code Online (Sandbox Code Playgroud)

将选择a所有的例子的元素,因为.代表了当前节点(a),并且contains()将检查字符串值a,看它是否含有'Link'。的字符串值a已经方便地从任何后代元素中抽象出来。

这个更简单的 XPath 表达式,

//a[. = 'Link']
Run Code Online (Sandbox Code Playgroud)

还将选择a所有示例中的元素。如果awill的字符串值完全相等,而不是仅仅包含,则适合使用"Link"

注意:上面的表达式也会选择<a href="blah">Li<br/>nk</a>,这可能是也可能不是。