2

我发现 Nokogiri xml 阅读器对 xml 语法很严格,因此如果它在 xml 中遇到无效字符,例如非转义的 & 符号(例如<tag> Garage & Driveway </tag>),将导致抛出错误。

因此,当我按如下方式使用阅读器时:

Nokogiri::XML::Reader(infile).each do |node|
  # does stuff with node
end

抛出错误:

Entity: line 1056614: parser error : xmlParseEntityRef: no name
            <tag>The & is invalid</tag>
                      ^

transmogrifier/gems/nokogiri-1.5.5/lib/nokogiri/xml/reader.rb:106:in `each'

使用这样的 XML:

<root> 
  <items>
    <tag>The & is invalid</tag>
  </items>
  <items>  ...  </items>
<root>

在解析大型文档的中途。我注意到 Nokogiri::XML::Parser 处理这个(更)优雅,并删除所有无效字符,这给了我一个更优雅的解决方案的希望。

理想情况下,我希望能够捕获错误并继续进行每个解析(因为很少有项目具有无效字符)。关于如何优雅地处理这个问题的任何建议?

我注意到你可以传入 ParseOptions,但没有任何运气使用这些。

提前致谢!

4

1 回答 1

0

从更宽容 XML 错误的切换Nokogiri::XML到可能会有所帮助。Nokogiri::HTML

于 2013-11-03T05:28:06.700 回答