XMLからPythonオブジェクト表現を作成するための扱いやすいPythonネイティブモジュールを探しています。
Google 経由でいくつかのモジュールを見つけました (そのうちの 1 つはXMLObject です) が、それらすべてを試したくありませんでした。
そのようなことをする最善の方法は何だと思いますか。
EDIT:私が読みたいXMLは私が生成したものではないことを言い忘れました。これは、私が制御できない構造の既存の XML ファイルです。
XMLからPythonオブジェクト表現を作成するための扱いやすいPythonネイティブモジュールを探しています。
Google 経由でいくつかのモジュールを見つけました (そのうちの 1 つはXMLObject です) が、それらすべてを試したくありませんでした。
そのようなことをする最善の方法は何だと思いますか。
EDIT:私が読みたいXMLは私が生成したものではないことを言い忘れました。これは、私が制御できない構造の既存の XML ファイルです。
オブジェクト表現が必要だとおっしゃいましたが、これは、ノードがオブジェクトになり、ノードの属性と子がオブジェクトの属性として表されることを意味すると解釈します (おそらくいくつかのスキーマに従って)。これが XMLObject が行うことだと私は信じています。
私が知っているいくつかのパッケージがあります。 4Suiteにはこれを行うためのツールがいくつか含まれており、Amaraはこれを具体的に実装していると思います (4Suite の上に構築されています)。Amara とgnosis.xml.objectifyに触発されたlxml.objectifyを使用することもできます。
もちろん、3 番目のオプションは、XML の具体的な表現 (ElementTree または lxml を使用) があれば、それを基に独自のカスタム モデルを構築できるというものです。 lxml.htmlはその例であり、lxml の基本インターフェースを HTML 固有の機能で拡張します。
2番目にxml.etree.ElementTreeの提案があります。これは、主に、現在stdlibにあるためです。より高速な実装もあり、xml.etree.cElementTreeも利用できます。
本当にパフォーマンスが必要な場合は、lxmlをお勧めします
http://www.ibm.com/developerworks//xml/library/x-hiperfparse/
Python 用の優れたサードパーティ ライブラリpyxserもあります。
pyxser は Python XML Serialization の略で、XML シリアライザーおよびデシリアライザーに対する Python オブジェクトです。つまり、Python オブジェクトを XML に変換し、その XML を元の Python オブジェクトに戻すこともできます。
最も簡単なのはElementTreeだと聞いたことがありますが、XML を扱うことはめったになく、経験からは何も言えません。
Python には、Python オブジェクトのシリアル化用の pickle および cPickle モジュールがあります。これらのモジュールは両方とも、Python オブジェクト階層をシリアライズ/デシリアライズしてバイト ストリームとの間で変換する機能を提供します。
以下は、同様のインターフェースを提供します: pickle()、unpickle() による XML との間のシリアル化
私は、XML ドキュメントから構築されたタプルを作成する PyRXP を使用しています (そして気に入っています)。
単純な XML -> Python オブジェクト構造の主な問題は、属性付きリスト (つまり、たまたま属性を持つ要素を持つリスト) に相当する Python がないことです。必要に応じて、リストと辞書の両方を同時に使用できます。
PyRXP からの結果を解析し、構造に応じてリスト/辞書を作成します。私が扱っている XML は、リストまたは属性ベースのいずれかであり、両方ではありません。(既知のソースからのデータを使用しています)。