我有一个使用nokogiri gem 1.4.0版本解析HTML的rails应用程序
要解析和清理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:"Arial","sans-serif""><o:p></o:p></span></p>
有没有办法让Nokogiri不炸掉这个标签?理想情况下,我希望它只是像hpricot那样保持标签不变,如果可能的话。如果没有,那么至少剥离标签会比抛出错误更好。
答案 0 :(得分:4)
我在Nokogiri 1.4.0中看到了这个问题。 Nokogiri&gt; = 1.4.1解决了名称空间定义问题。