我有这段代码。
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
如果我将片段包装在html
和body
标签中,则会解析整个输入。
有没有办法在HTML片段上使用SAX样式解析器?
答案 0 :(得分:2)
您需要将片段包装在根元素中:
<div>
<h1>Hello</h1>
<p>Hi.</p>
</div>
应该解决你的问题。