gpt4 book ai didi

namespaces - Nokogiri HTML 解析未定义方法 'namespace_definitions' 在 tag 上爆炸

转载 作者:行者123 更新时间:2023-12-04 16:51:05 25 4
gpt4 key购买 nike

我有一个使用 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:&quot;Arial&quot;,&quot;sans-serif&quot;"><o:p></o:p></span></p>

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

最佳答案

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

关于namespaces - Nokogiri HTML 解析未定义方法 'namespace_definitions' 在 <o :p> tag 上爆炸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6444175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com