Nokogiri HTML 解析未定义的方法'namespace_definitions'在 <o:p> 标签上爆炸



我有一个rails应用程序,它正在使用nokogiri gem 1.4.0版解析HTML

为了解析和清理html片段,我使用以下代码:

Nokogiri::HTML::DocumentFragment.parse(text).to_html

当我试图解析某些输入时,我会遇到这个错误,这在使用hpricot解析时是有效的:

NoMethodError: undefined method `namespace_definitions' for nil:NilClass
    from .../nokogiri-1.4.0/lib/nokogiri/xml/fragment_handler.rb:33:in `start_element'
    from .../nokogiri-1.4.0/lib/nokogiri/html/sax/parser.rb:34:in `parse_with'
    from .../nokogiri-1.4.0/lib/nokogiri/html/sax/parser.rb:34:in `parse_memory'
    from .../nokogiri-1.4.0/lib/nokogiri/xml/sax/parser.rb:83:in `parse'
    from .../nokogiri-1.4.0/lib/nokogiri/xml/document_fragment.rb:7:in `initialize'
    from .../nokogiri-1.4.0/lib/nokogiri/html/document_fragment.rb:9:in `new'
    from .../nokogiri-1.4.0/lib/nokogiri/html/document_fragment.rb:9:in `parse'

我已经追踪到了标签,从我得到的信息来看,MS Office用来标记段落中断。

<p class="MsoNormal"><span style="font-family:&quot;Arial&quot;,&quot;sans-serif&quot;"><o:p></o:p></span></p>

有没有办法让野村不在这个标签上爆炸?理想情况下,如果可能的话,我希望它像hpricot一样保持标签不变。如果没有,那么至少剥离标签比抛出错误要好。

我在Nokogiri 1.4.0中看到了这个问题。Nokogiri>=1.4.1解决了名称空间定义问题。

相关内容

  • 没有找到相关文章

最新更新