我发现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,但没有运气使用它们。
提前致谢!
答案 0 :(得分:0)
从Nokogiri::XML
切换到Nokogiri::HTML
,这对XML错误更加宽容,可能会有所帮助。