Frage

Ich habe diesen 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'))

Ausführen auf einem HTML-Fragment wie diese,

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

Die Ausgabe zeigt, dass nur das erste Element verarbeitet wird:

start_element h1
characters Hello
end_element h1

Wenn ich das Fragment in html und body Tags wickeln die gesamte Eingabe analysiert wird.

Gibt es eine Möglichkeit, einen SAX-Parser-Stil zu verwenden, auf HTML-Fragmente?

War es hilfreich?

Lösung

Sie benötigen Fragment in einem Wurzelelement wickeln:

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

Ihr Problem lösen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top