Pregunta

Tengo este 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'))

Ejecutar en un fragmento de HTML como este,

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

la salida muestra que sólo el primer elemento se procesa:

start_element h1
characters Hello
end_element h1

Si envuelvo el fragmento de etiquetas html y body, toda la entrada se analiza.

¿Hay una manera de utilizar un analizador SAX estilo de fragmentos de HTML?

¿Fue útil?

Solución

Es necesario para envolver su fragmento en un elemento raíz:

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

debería resolver su problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top