私はdetailed hereとしてXMLファイルを解析するためのPythonコードを持っています。私は、XMLファイルがメモリ内で操作されたときにシステムリソースを消費することで有名であることを理解しています。私のソリューションは、より小さいXMLファイル(200KBと340MBのファイルがあります)で動作します。XMLファイルをPythonで簡単に分割する方法は?
私はStAX(プルパーサー)の実装を研究し始めましたが、私は厳しいスケジュールで実行しています。私はこの作業のためのもっと簡単なアプローチを探しています。
私はファイルの小さな塊の作成を理解していますが、毎回main/headerタグを出力して正しい要素を抽出するにはどうすればよいですか?例えば
、これはスキーマです:
<?xml version="1.0" ?>
<!--Sample XML Document-->
<bookstore>
<book Id="1">
....
....
</book>
<book Id="2">
....
....
</book>
<book Id="3">
....
....
</book>
....
....
....
<book Id="n">
....
....
</book>
</bookstore>
どのように私はすべて1000個のbook要素のためのヘッダデータを使用して新しいXMLファイルを作成するのですか?コードとデータセットの具体例については、私の他のquestion hereを参照してください。どうもありがとう。
私がやりたいことは、データセットのメモリ内ロードを一度に避けることです。ストリーミング形式でXMLファイルを解析できますか?私は正しい線に沿って考えていますか?
p.s:私の状況は2009年のquestion askedに似ています。私の問題の解決策が見つかったら、ここに回答を投稿します。あなたのフィードバックは高く評価されます。
より良い、パフォーマンスの向上のために使用するlxmlののetree(http://lxml.de/tutorial.html)。 – six8
@Cixate:解析が必要なときに 'cElementTree.iterparse()'が 'lxml.etree.iterparse()'より遅いかどうかは、ベンチマークなしでは不明です。http://www.ibm.com/developerworks/xml /ライブラリ/ x-hiperfparse / – jfs