2010-03-16 8 views
3

J'ai ce code.Can Nokogiri peut-il utiliser un analyseur syntaxique SAX pour analyser un fragment 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')) 

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

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

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

start_element h1 
characters Hello 
end_element h1 

Si j'Enroulez le fragment dans html et body balises , toute l'entrée est analysée.

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

Répondre

2

Vous devez envelopper votre fragment dans un élément racine:

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

devrait résoudre votre problème.

Questions connexes