引入nokogiri可以使用SAX解析器解析HTML片段?
题
我有这样的代码。
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
标签,整个输入被解析。
有没有使用SAX解析器风格在HTML片段的方法吗?
解决方案
您需要包装的片段在一个根元素:
<div>
<h1>Hello</h1>
<p>Hi.</p>
</div>
应该解决您的问题。
不隶属于 StackOverflow