我有以下HTML结构:
<p>
<!-- Span can be any level deep -->
<span>
Some text
</span>
</p>
<!-- Any number of different elements between span and table -->
<p></p>
<div></div>
<table>
<tr>
<td></td>
</tr>
</table>
使用Nokogiri和自定义XPath函数,我能够选择包含与正则表达式匹配的上下文的<span>
元素。我不得不这样做,因为Nokogiri使用的是XPath 1.0,并且不支持matches
选择器:
@doc.xpath("//span[regex_match(text(), '/some text/i')]")
选择span
节点后,如何选择span
后面的表?
我使用contains
函数来匹配文本。然后使用following::table
来查找这个span
标签后面的表。
@doc.xpath("//span[contains(text(), 'Some text')]/following::table")