2013-10-22 64 views

回答

1

可以使用contains() XPath function

doc.xpath("//h3[contains(text(), 'Foobar')]") 

或者,如果目標文本可能是在h3後代文本節點,使用:

doc.xpath("//h3[contains(.//text(), 'Foobar')]") 

要,而不是直接獲取第一個匹配的元素一個數組,使用at_xpath而不是xpath

2

由於這是HTML,我會建議CSS選擇器:

puts doc.at_css('h3:contains("Foobar")') 

#=> <h3>Foobar</h3> 

CSS選擇趨向解析HTML時做出了更具可讀性的表達式。我傾向於將XPath僅用於XML,或者當我需要XPath表達式的全部功能時。

+1

HTML或XML,無論哪種方式,CSS選擇器在大多數情況下都比XPath更具可讀性。儘管XPath有更多的功能。 –