2009-08-29 9 views
21

私はインターネット上でオブジェクトをXMLファイルにマーシャリングするAPIを利用しています。 XSDファイルも利用できることを考えれば、ファイルをダウンロードした後、Javaオブジェクトにアンマーシャリングすることができます。XMLファイルをAndroidのJavaオブジェクトにアンマーシャリングするには?

それを見て回った後、JAXBはJavaでこれを行うためのデフォルトライブラリですが、私はモバイルアプリを開発しているので、余分な8.6MBの依存関係は受け入れられません。私はまたXStreamを見つけましたが、それはまだ7.9MBの重さです。

Android SDKを覗くと、唯一の実際のXMLパーサーはSAXです。 SAXは私がやりたいことを得るための方法が

  1. あります:

    だからここは質問ですか?

  2. Android SDKに、私が見逃したツールがありますか?
  3. これを行う別のライブラリがありますか?

ありがとうございます。

答えて

2

JavaとXMLの間でオブジェクトを翻訳するツールはたくさんありますが、私がよく知っているものはどれもあなたが見つけたものより小さいものではありません。しかし、オブジェクトグラフの複雑さにもよりますが、SAXが必要なだけで、オーバーヘッドはほとんどありません。このトリックは、SAXイベントハンドラ内でオブジェクトグラフを自分で作成することです。私はXMLマーシャラーが広く利用できるようになる前に、この手法を2つのプロジェクトで使用しましたが、もう少し作業は必要ですが効果的です。

+0

ええと...私が代替案を探し始めた主な理由は、「オブジェクトグラフ」が実際にはかなり複雑なことです。私は見ていくつもりです...ありがとう。 –

0

Android SDKでは、SAXのほかにDOMパーサーとXMLPullParserも利用できます。

メモリ内のデータ構造を自分で完全に構築したくない場合は、スピードとメモリフットプリントが支払う価格であれば、DOMは苦痛を和らげます。

19

JAXBと同様にアノテーションを使用してJavaからXMLへのバインディングを行うAndroidで動作するフレームワークがあります。これはSimpleと呼ばれ、270K未満の重さであり、XStreamやJAXB。また、外部依存関係はなく、JARは1つしかなく、すべてが動作するはずです。以下は、JavaのためのシンプルなXMLシリアル化フレームワークへのリンクです。

http://simple.sourceforge.net

これは、オブジェクトグラフ上のサイクルを扱うことができます。

+4

このライブラリは素敵ですね、私はアンドロイドアプリでテストしますが、XSDからこの形式にJavaクラスを構築するツールはありますか? – yeradis

+1

これをこのコメントに追加することもできます:http://www.javacodegeeks.com/2011/02/android-xml-binding-simple-tutorial.html –

+5

そして、私は、単純なAndroidプロジェクトはこちら:http://robertmassaioli.wordpress.com/2011/04/21/simple-xml-in-android-1-5-and-up/ –

5

XStreamは431kです。あなたはあなたのアンドロイドアプリケーションで配布ジップ全体を必要としません。より速いパフォーマンスのためにxpp3プルパーサーを追加すると、24kが追加されます。それはパッケージ全体を455kにするでしょう。まだ理想的ではありませんが、私はそれで生きることができます。

1

kxml2-2.2.2は、JavaMEで動作する素敵なlib(43K)です。解析をプルして、正常に使用しました。それが持つ唯一の依存関係はxmlpullで、これは8kです。それはどうやって小さいの?

魔法をかけていないということです。

0

クラスを生成し、XSDからコードをエンコード/デコードするXBinderという製品があります。バージョン2.1は約187Kです。バージョン2。2(2010年10月予定)には約101K(Androidではv2.1よりもやや使いやすい)です。それをチェックしてくださいhere

関連する問題