2011-01-18 20 views
1

(Java/Python)オブジェクトをxmlにシリアル化して逆シリアル化できるxmlシリアル化ライブラリを探していました。私はJava用にXStreamを使用しています。 XStreamには、Xstreamで生成されたxmlから逆シリアル化するPythonのバージョンがあれば、それは私のためにやったでしょう。 Thriftやその他のライブラリは、データ形式をXMLにすることができない限り動作しません。私はそれを行うことができるライブラリのための提案を探しています。 - ありがとうJavaとPythonのXMLシリアル化ライブラリの相互運用性

答えて

1

JavaとPythonのオブジェクト自体が非常に異なるので、両方の側で許可されている型などを制限しない限り、これはほとんど不可能です。

その場合は、XMLではないにもかかわらず、優れた相互運用性の形式であるJSONを使用することをお勧めします。

そうしないと、XStream XMLをPythonオブジェクトに読み込むライブラリを簡単に書くことができますが、JavaとPythonの間に似ているものに制限されます。

0

あなたは、Javaオブジェクトをシリアル化してPythonオブジェクトにデシリアライズする自動化された方法を見つけられる可能性が高いと思います。それらは別のものなので、翻訳したい場合は片方または両方のコードにコードを書く必要があります。

文字列、数字、ブール値などの単純な要素の場合は、ほぼすべての言語に対応する非常に単純な形式のjsonを調べるとよいでしょう。問題にアプローチする別の方法では、Javaオブジェクトを直接使用することができますので、Jythonを、JavaでのPythonの実装を使用することであるかもしれません

json.loads('{"test":false}') 

:PythonでJSONオブジェクトをDeserialisingすることと同じくらい簡単です。

0

XStreamはJavaオブジェクトのシリアライゼーションフレームワークであり、一般的なデータマッピング/バインディングフレームワークではないという問題点があります。これは設計によるものです(XStream FAQを参照してください)。これは、すべての種類のJavaオブジェクトをすぐにシリアライズして逆シリアル化できるという点です。欠点は、結果として得られるXML構造が非常に堅牢であることです。名前を変更することは可能ですが、その他の設定性はあまりありません。

しかし、XStreamだけがJava XML処理ライブラリではありません。 JAXB reference implementationまたはJibXのいずれかをチェックすることをお勧めします。これにより、処理するXMLをより詳細に制御できるようになります。これは、良好な相互運用性を達成するために必要な場合があります。

0

本当にXMLを使用する必要がありますか?

JavaとPythonの間で構造化データをシリアル化する場合は、Google Protocol Buffersと考えてください。