我发现 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,但没有任何运气使用这些。
提前致谢!