2012-09-06 21 views
2

我發現Nokogiri xml讀者嚴格使用xml語法,因此如果在xml中遇到無效字符(如非轉義符號)(例如<tag> Garage & Driveway </tag>)會導致錯誤被拋出。使用Nokogiri :: XML :: Reader處理無效的XML

所以當我用讀者如下:通過分析大量文件

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

中途島:

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像這樣。我注意到Nokogiri :: XML :: Parser處理這個(更多)優雅,並刪除所有無效的字符,這給了我一個更優雅的解決方案的希望。

理想情況下,我希望能夠抓住錯誤並繼續進行每個解析(因爲很少有項目具有無效字符)。有關如何優雅地處理這個問題的任何建議?

我注意到你可以通過ParseOptions,但沒有使用這些運氣。

在此先感謝!

回答

0

Nokogiri::XML切換到Nokogiri::HTML,這對XML錯誤更爲寬容,可能會有所幫助。