2

Nokogiri xmlリーダーはxml構文に厳密であることがわかったため、エスケープされていないアンパサンド(例<tag> Garage & Driveway </tag>)など、xml内で無効な文字が検出されると、エラーがスローされます。

したがって、リーダーを次のように使用すると、次のようになります。

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

Nokogiri::XMLからに切り替えるNokogiri::HTMLと、XML エラーをはるかに許容できるようになるため、おそらく役立つでしょう。

于 2013-11-03T05:28:06.700 に答える