Nokogiri pode usar um analisador sax para analisar um fragmento HTML?
Pergunta
Eu tenho esse código.
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'))
Corra em um fragmento HTML como este,
<h1>Hello</h1>
<p>Hi.</p>
A saída mostra que apenas o primeiro elemento é processado:
start_element h1
characters Hello
end_element h1
Se eu envolver o fragmento em html
e body
Tags, toda a entrada é analisada.
Existe uma maneira de usar um analisador de estilo sax em fragmentos HTML?
Solução
Você precisa envolver seu fragmento em um elemento raiz:
<div>
<h1>Hello</h1>
<p>Hi.</p>
</div>
deve resolver seu problema.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow