【发布时间】:2014-06-18 10:09:08
【问题描述】:
我正在使用 Nokogiri gem 来解析 HTML 数据。
$ gem list nokogiri
*** LOCAL GEMS ***
nokogiri (1.6.2.1)
示例 HTML 是:
<html>
<body>
<xhtml:link>
<div>
Some content.
</div>
</xhtml:link>
</body>
</html>
我来了
>> doc.xpath('/html/body/xhtml:link/div')
Nokogiri::XML::XPath::SyntaxError: Undefined namespace prefix: /html/body/xhtml:link/div
from /var/lib/gems/1.9.1/gems/nokogiri-1.6.2.1/lib/nokogiri/xml/node.rb:159:in `evaluate'
from /var/lib/gems/1.9.1/gems/nokogiri-1.6.2.1/lib/nokogiri/xml/node.rb:159:in `block in xpath'
from /var/lib/gems/1.9.1/gems/nokogiri-1.6.2.1/lib/nokogiri/xml/node.rb:150:in `map'
from /var/lib/gems/1.9.1/gems/nokogiri-1.6.2.1/lib/nokogiri/xml/node.rb:150:in `xpath'
from (irb):95
from /usr/bin/irb:12:in `<main>'
可以在here找到完整的实时 HTML 页面示例
我怎样才能避免这个错误?
【问题讨论】:
-
不是真正的问题,但您似乎错过了关闭
body标签。 -
你不能
doc.xpath('/html/body/link/div')吗? -
我通过检查 Firebug 中的元素来获取 xpath。这适用于其他文档,但只要元素标签中有冒号“:”,就会出现上述错误。
-
您是在解析为 HTML 还是 XML?如果您解析为 HTML,那么 Nokogiri 会带有命名空间,所以您可以使用
link。