我有这样的代码。

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标签,整个输入被解析。

有没有使用SAX解析器风格在HTML片段的方法吗?

有帮助吗?

解决方案

您需要包装的片段在一个根元素:

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

应该解决您的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top