2011-07-24 5 views
5

org.w3c.dom DOM APIを使用してXMLを読み書きする内部ライブラリがあります。このライブラリをAndroidで使用しようとすると、もはや動作しないことがわかりました。 AndroidはDOM APIのサブセットのみを実装しているようです。理由はわかりませんが、Android 2.2では修正されていますが、古いデバイスをターゲットにする必要があります。AndroidでのDOM APIの代替方法

私は、XOMやDom4jなどの「通常の」Javaのためのいくつかの代替DOMライブラリを知っています。誰でも以下の目標を満たすDOMライブラリを推薦できますか?

  • Androidで動作する必要があります。
  • これは小さくなければなりません(人はMB単位で支払うため)。
  • 既存のコードを書き直す必要があるので、理想的にはorg.w3c.dom APIと似ているはずです。

3つの目標をすべて満たすことはおそらく不可能ですが、2つの場合はすでに満足しています。また、好奇心の外に誰でも知っていますかなぜ DOM APIが完全にサポートされていないのですか?私はJava Soundなどを実装しない理由を理解することができますが、XMLは私にとって非常に重要です。

+0

DOMのどの部分が欠けていますか?あなたのライブラリは実装されていない方法や欠落している方法についてエラーを出していますか? – Nick

+0

Element.getTextContent()、Document.setXmlStandalone()、基本的に(DOMオブジェクトをファイルに書き込むための)javax.xml.transformパッケージのすべてです。 –

答えて

1

一般的には、直接パーサーを使用した場合と比べてパフォーマンスが悪いため、DOMパーサから離れたほうが良いでしょう。 XmlPullParserまたはSAXを使って解析する方がずっと良いでしょう。

私は知っています、あなたは既にDOMを使用するコードを持っています、そしてそれはあなたがそれをやりたい方法です。しかし、私を信じて、あなたはモバイル機器でこれを使用すべきではありません。

+0

これは興味深い入力です。あなたの主張をバックアップするベンチマーク/スタディがありますか? –

+0

私が何年も前に見たとき、それは約10倍遅かった。基本的には、Resource()。getXml()、XmlPullParser/SAX、DOMへの解析から移動するにつれて、より大きな(またはそれ以上の)桁が得られます。 – hackbod

+0

改善されたガベージコレクションアルゴリズムを使用していても、Xerces/XalanとJVMの改良により、XML世界では多くのことが変化しました。私はDOMが今日非常に速く、ほとんどのユースケースに適していると感じています(Androidではなくても)。残念ながら、私はそれを事実とともに取り戻すことはできません... –