2012-01-17 11 views
0

私のAndroidアプリでは、複雑なクラスの整列されたオブジェクトを必要とするWebサーバーと話をする必要があります。これらのカスタムクラスはWSDLファイルから生成されたものなので、すでにアノテーションが付いています。サーバーはmarhallingとunmarhallingにJAXBを使用します。その後、AndroidでJAXBContextを使用する良い選択肢はありますか?

JAXBContext jc = JAXBContext.newInstance("schema_definition_path"); 
Marshaller m = jc.createMarshaller(); 
Unmarshaller u = jc.createUnmarshaller(); 

...とカスタムオブジェクトをデシリアライズ/シリアライズ動作するマーシャラーとUnmarshallerのインスタンスを使用します。

ので、クライアント側では、JAXBを使用して、私はこれまでシンプルでしょう。

モバイルアプリで重いJAXBライブラリを使用するのは良い考えではないので、JAXBが私のためにやることを行うための代替手段を探しています。

私はSimple XML Serializationをチェックアウトしましたが、この種の機能を提供していないようです。私はスキーマ定義パスの代わりにクラスをunmarshallerに与えることしかできません。これを行うと、ルート要素のみを含むXML文書が不完全になります。

誰でも正しい方向に私を向けることができますか?これも可能ですか?私は別のlibを使うべきですか?私はSimpleXMLを悪用していますか?

+0

私が知っている限り、単純なXMLはJAXBに近いアンドロイドの機能のようなものになる唯一のライブラリです。私は別のショットを与えるだろう。 –

+0

コメントありがとうございます。私はもう少しそれを使って遊んだ。私はカスタムクラスをコピーし、JAXBをSimpleXMLアノテーションに置き換えることができます。これは良い解決策のようには思えません。オブジェクトがかなり深くネストされているので、多くの手動変更が必要になります。 JAXBのものに必要なクラスだけをjavax。*名前空間からコピーして再パックすることは可能でしょうか? – Bashorings

+0

質問は実際には、どのソリューションがあまり醜いのですか;-) – Bashorings

答えて

0

私はこれまでより良い方法が見つからなかったので(元の質問に対するコメントを参照)、Androidに含まれているXML Pull API実装を使用してオブジェクトを手動で変換することにしました。ここで

はそれを使用する方法についての短いチュートリアルです:私はそれは良い方法だとは言わないよ、それは動作します、私はそのことを考えることができる唯一のことだと私はする必要はありませんどこ http://www.ibm.com/developerworks/opensource/library/x-android/

元のクラスに触れてください。

関連する問題