我在我的Rails项目中运行Xpath 2.0,并尝试使用它提供的matches()
函数,如下所示:
page = Mechanize.new.get('http://www.example.com').parser
page.search("//a[matches(text(),'lagerfordon','i')]").first.text
会抛出以下错误:
RuntimeError: xmlXPathCompOpEval: function matches not found
我做错了什么?
答案 0 :(得分:5)
Nokogiri(建立在Mechanize上)使用支持XPath 1.0但不支持XPath 2.0的libxml,因此没有matches
函数可用。
您可以使用contains
功能执行区分大小写的匹配:
//a[contains(text(),'lagerfordon')]
为了进行不区分大小写的匹配,或者使用更复杂的正则表达式,您需要从Ruby中的Mechanize过滤结果,或者创建自定义XPath函数。