0

Jython から大きな (>800MB) XML ファイルを解析する必要があります。XML は深くネストされておらず、約 100 万の関連要素が含まれています。これらの要素を実際のオブジェクトに変換する必要があります。

以前は正常に使用nu.xom.*していましたが、Java から Jython に切り替えたので、ライブラリは次のメッセージで失敗します。

パーサーは、このドキュメントで「64,000」を超えるエンティティ展開に遭遇しました。これは、アプリケーションによって課される制限です。

これを修正する方法が見つからないので、おそらく別の XML ライブラリを探す必要があります。Java または Jython 互換の Python のいずれかであり、効率的である必要があります。Pythonic は素晴らしく、nu.xom.*シンプルですが、あまり Pythonic ではありません。何か提案はありますか?

4

4 に答える 4

4

Sax は、大きなドキュメントを解析するための最良の方法です。

デフォルトの拡張制限に達しているようです。このメモを参照してください。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4843787

デフォルトを変更するには、システム プロパティ「entityExpansionLimit」を設定する必要があります。

(追加)この質問への回答も参照してください。

于 2011-02-24T23:39:15.237 に答える
3

jython はサポートしていxml.etree.ElementTreeますか? その場合は、このiterparse方法を使用してメモリ サイズを抑えてください。これを読んで、説明に従って elem.clear() を使用してください。

于 2011-02-24T21:31:00.737 に答える
3

SAX パーサーを使用してみてください。これは、大きな XML ファイルのストリーミングに最適です。

于 2011-02-23T16:53:33.073 に答える
0

データをメモリにロードせずに大きなファイルを解析できるlxml Python ライブラリがあります。しかし、jython と互換性があるかどうかはわかりません

于 2011-02-24T17:54:58.617 に答える