私は何年もの間、XMLを解析するためにminidomを使用してきました。今、私は突然エレメントツリーについて学びました。私の質問はより良い構文解析のためですか?あれは:
なぜ2つのインターフェースがあるのですか?
ありがとう。
Pythonには2つのインターフェースがあります。これはおそらく、ミニダムが登場してからかなり後にElementTreeが標準ライブラリに統合されたためです。この理由は、W3Cで制御されるDOMと比較してはるかに「Pythonic」なAPIである可能性があります。
速度が気になる場合は、 lxml もあります。これはlibxml2を使用してElementTree互換のDOMを構築し、非常に高速である必要があります。これらには、ElementTreeのPythonおよびCの実装が利用可能です。
メモリの使用が心配な場合は、とにかくツリーAPIを使用しないでください。 PullDOMの方が良い選択かもしれませんが、私はJavaの優れたプルパーサーを使用した経験から推測しています。PullDOMに関する現在の情報はあまりないようです。
XML解析用のDOMおよびSaxインターフェースは、XMLを操作するための古典的な方法です。 Pythonはよく知られていて標準的であるため、これらのインターフェイスを提供する必要がありました。
ElementTreeパッケージは、よりPythonicなインターフェースを提供することを目的としていました。プログラマーにとって物事を簡単にすることがすべてです。
ビルドに応じて、それぞれに基盤となるC実装があり、高速に実行できます。
上記のツールはいずれも非推奨ではありません。それぞれにメリットがあります(たとえば、Saxは入力全体をメモリに読み込む必要はありません)。
lxml と呼ばれるサードパーティのモジュールもあります。これも人気のある選択肢です(フル機能で高速)。