2009-06-16 5 views

答えて

6

XOMは極めて迅速な標準W3C DOMに比べです。それがあなたの優先事項であれば、それ以上はありません。

しかし、それはまだDOM型のAPIだし、それはメモリ効率的ではありません。それはSAXまたはSTAXの代わりではありません。

1

どのようにデータにアクセスする必要がありますか?

それが1パスである場合は、メモリ内のツリーを構築する必要はありません。 SAX(高速、単純)またはStAX(高速、あまり単純ではない)を使用できます。

ツリーをメモリに保存してナビゲートする必要がある場合は、XOMまたはJDOMが適しています。 DOMは、最後のリゾートの選択肢で、レベル1,2,3のいずれであっても、拡張子の有無にかかわらずです。

Javaに付属しているパーサーであるXerces(Apacheで更新されたバージョンを入手し、6.0でもJavaにバンドルされていないものを使用する必要があります)でも、XNIというストリーミングネイティブインターフェイスがあります。

あなたがチェーン内の他の既製の部品をフックアップしたい場合、彼らはメモリで独自のモデルを構築する可能性があるため、多くの場合、SAXまたはStAXには、うまく機能は。たとえば、Saxon XSLT/XQueryエンジンは、DOM、SAX、またはStAXで動作しますが、内部ではTinyTree(デフォルト)またはDOM(オプション)を構築します。 DataDirect XQueryはSAX、StAX、またはDOMでも動作しますが、は実際にが好きです。

+4

あなたは、SAXはStAXよりも簡単だと言っています。 SAXはもっとシンプルなAPIかもしれませんが、StAXベースのコードを書くことは、SAXを書くよりもずっと簡単です。 – skaffman

4

あなたはこのquestion about the best XML libraryとそのトップ(XOM)の答えをチェックしたい場合があります。 XOMの利点についての多くの詳細。

前述したように、XOMは、標準のjavax.xmlと比較して、非常に迅速でシンプルです。たとえば、JavaでXMLファイルを読み込む最も簡単な方法については、this postを参照してください。私は、XOMをかなり見やすくするための良い例をいくつか集めました。 :-)

だから個人的に私は(あなたがリンクの記事に見ることができるように)評価した後にXOMを好きになってきました。新しいJavaプロジェクトであれば、XML処理のためにXOMを選択する可能性が最も高いです。私が見つけた唯一の欠点は、doesn't directly support streaming XML(私がそこから来ているdom4jとは異なります)ですが、a simple workaroundでそれはうまく流れます。

+0

あなたの質問はhttp://stackoverflow.com/questions/967288/how-to-stream-xml-data-using-xomには受け入れられた答えがあることがわかります。ストリーミングはまだXOMの欠点ですか? – Sundeep

+0

XOM APIは直接サポートしていないので、そうです。 (しかし、その答えが示すように、回避策はかなり簡単です。) とにかく、XOMがうまくいくかどうか試してみてください!私が今使っている別のJava XMLのlibは[Simple Framework](http://stackoverflow.com/a/17041986/56285)です。 – Jonik

+0

私は非常に答えからストリーミングでXOMを使い終わった。ありがとう。ちょっとしたことなく10000ノードでXMLをストリーミングすることができました。 XOMは実際にはストリーミングをサポートしていないと言っているので、私は尋ねました。私はあなたが上記の答えでそれを変更する必要がありますね。シンプルなフレームワークのおかげで、私の次のプロジェクトでそれを試してみましょう。 – Sundeep

関連する問題