【问题标题】:Interrupt Nokogiri SAX Parser?中断 Nokogiri SAX 解析器?
【发布时间】:2011-12-08 21:18:16
【问题描述】:

我正在使用 Nokogiri SAX 解析器来查找 XML 文档中的特定片段,但是一旦完成,就没有理由继续扫描文档。

有没有办法立即终止解析?

【问题讨论】:

    标签: ruby nokogiri


    【解决方案1】:

    查看 Nokogiri 的源代码后,我不相信这是可能的。

    Nokogiri 在某些时候——为了响应一些 Ruby 方法或返回值——需要在 libxml2 中调用 xmlStopParser()。因为:

    1. 我在the source code(包括xml_sax_parser.c的源代码)的任何地方都没有看到这个函数,并且
    2. 我在谷歌搜索"Nokogiri" "xmlStopParser" 时没有找到任何匹配项

    我得出的结论是 Nokogiri 目前没有任何办法停止解析。

    【讨论】:

    • 你能把它排除在外吗?这将是非常令人讨厌的,滥用异常系统,我应该做一些忏悔,甚至想到它。
    • @muistooshort 你这个可怕的、可怕的人。不过,为这个想法+1。 :) 尽管如此,我还是有点担心它可能会从 libxml2 SAX 解析器的耳朵中泄漏一些内存,而它可能永远无法 ensure 它清理掉。
    • 它确实有效,但我很惭愧无法将其作为答案。
    • 感谢 Phrogz 的调查!我想我会让它解析整个文档,并在我处理它的时候再做一些健全性检查。 @muistooshort——事实上我也考虑过这样做xD。
    • 扩展异常想法,使用throw :obscured_symbol_919155catch :obscured_symbol_919155 似乎不那么罪恶。 (或使用Object.new 创建唯一令牌)
    猜你喜欢
    • 1970-01-01
    • 2014-05-24
    • 2011-01-27
    • 1970-01-01
    • 2014-03-17
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多