2012-02-12 12 views
2

40,000のタグ要素を持つ非常に大きなXMLファイルがあります。 このファイルを解析するために要素ツリーを使用しているとき、メモリのためにエラーが発生しています。 xml全体をメモリにロードせずに、データチャンク内のxmlファイルを読み取ることができるPythonのモジュールはありますか?そのモジュールはどのように実装できますか?チャンクでXMLファイルを解析する方法

+2

私はpythonistではありませんが、XMLを解析するためのSAX(DOMではない)aproachを探します。 –

+3

問題がタグへのランダムアクセスを必要としない限り、SAXは完璧です。そうでない場合は、メモリ内のデータのよりコンパクトな表現を作成する方法がある場合でも、それを使用することができます。 –

+0

lxmlが最適です.. IBMもお勧めします:) – codersofthedark

答えて

2

おそらく、PythonでXMLを操作するための最良のライブラリはlxmlです。この場合、iterparse/iterwalkに興味があります。

+2

http://stackoverflow.com/questions/7171140/using-python-iterparse-for-large-xml-filesこれは大きなXMLを扱う際には注目に値するファイル。 –

2

これは、人々が通常サックスを使用して解決する問題です。

あなたの巨大なファイルが基本的にXML文書の集まりであり、全体的なXMLエンベロープである場合は、sax(または単純文字列解析)を使用して一連の個別ドキュメントに分解し、 lxml.etree。

関連する問題