Nokogiri可以使用SAX解析器来解析HTML片段吗?

时间:2010-03-16 05:18:55

标签: html ruby nokogiri sax fragment

我有这段代码。

class MyParser < Nokogiri::XML::SAX::Document
  def characters(string)
    LOG.debug("characters #{string}")
  end

  def start_element(name, attrs = [])
    LOG.debug("start_element #{name}")
  end

  def end_element(name)
    LOG.debug("end_element #{name}")
  end
end

parser = Nokogiri::HTML::SAX::Parser.new(MyParser.new)
parser.parse(File.new($*[0], 'rb'))

运行像这样的HTML片段,

<h1>Hello</h1> 
<p>Hi.</p>

输出显示只处理第一个元素:

start_element h1
characters Hello
end_element h1

如果我将片段包装在htmlbody标签中,则会解析整个输入。

有没有办法在HTML片段上使用SAX样式解析器?

1 个答案:

答案 0 :(得分:2)

您需要将片段包装在根元素中:

<div>
<h1>Hello</h1> 
<p>Hi.</p>
</div>

应该解决你的问题。