【发布时间】:2010-12-08 16:40:10
【问题描述】:
我的测试 html 文件在这里:http://pastebin.com/L88nYbQY
如您所见,有一些未闭合的输入标签,还有一些自闭合标签。
这会导致以下代码返回从开始 #qcbody div 到文件末尾的所有内容,忽略结束 div 标记。
require 'nokogiri'
f = File.open('t.html', 'r')
@doc = Nokogiri::XML(f)
@doc.at_css('#qcbody').to_html
我相信人们已经通过各种方式解决了这个问题。你会怎么做?
【问题讨论】:
-
以前从未看过这个,但看了一眼文档,我猜“使用 Nokogiri::HTML 解析 HTML 并留下 Nokogiri::XML 解析 XML”(注意 XHTML 不是格式良好是不适合 XML 解析器的无效憎恶)。 (但这只是猜测)
-
谢谢,但
Nokogiri::HTML只解析 HTML 标头。 -
实际上,我认为你是对的,大卫。我的问题似乎与 libxml 的版本有关。在带有 libxml 2.7.7 的系统上,Nokogiri::HTML 可以工作,但在带有 libxml 2.6.26 的系统上,它只返回 html 标签。
-
libxml 存在一些影响 Nokogiri 解析能力的错误。以前版本的 Nokogiri 会发出一条抱怨它的消息,直到您承认问题不是 Nokogiri 的问题,而是在 libxml 中。所以,尝试升级 libxml 是个好主意。
标签: html ruby xml parsing nokogiri