代码之家  ›  专栏  ›  技术社区  ›  user85509

Nokogiri可以使用SAX解析器解析HTML片段吗?

  •  3
  • user85509  · 技术社区  · 16 年前

    我有这个密码。

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

    在这样的HTML片段上运行,

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

    输出显示只处理第一个元素:

    start_element h1
    characters Hello
    end_element h1
    

    如果我把碎片包起来 html body 标记,解析整个输入。

    有没有一种方法可以在HTML片段上使用SAX风格的解析器?

    1 回复  |  直到 15 年前
        1
  •  2
  •   CodeJoust    15 年前

    您需要将片段包装在根元素中:

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

    应该解决你的问题。

    推荐文章