Question

Je le code.

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

Exécuter sur un fragment HTML comme celui-ci,

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

la sortie indique que seul le premier élément est traité:

start_element h1
characters Hello
end_element h1

Si j'Enroulez le fragment dans les balises html et body, l'entrée entière est analysée.

Y at-il un moyen d'utiliser un analyseur de style SAX sur des fragments HTML?

Était-ce utile?

La solution

Vous avez besoin d'envelopper votre fragment dans un élément racine:

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

devrait résoudre votre problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top