2

xml プル パーサーを使用する必要があります。すでに com.sun.xml.* の一部であると思われる stax-api.jar を見つけることができ、stax 関連の何かが既に実装されているようです。

残念ながら、com.sun.xml には JDK 6 のソースがないため、わかりません。

また、 xmlpullstax.codehaus.orgapache axiomなど、stax -api を実装したものもあります。stax.codehaus.org は、stax リファレンス実装のようです。Xmlpull はリファレンス実装と同じ人によって行われているようで、Apache Axiom は Apache Axis2 用に作成された StAX ベースのパーサーのようです。

主な違い、使用する API、これらの実装のいずれかをいつ使用するか、またその理由を明確にしていただけますか?

編集: この質問を締めくくる前に、xmlpull.org と stax.codehaus.org のリリースはかなり古く (5 年)、stax パーサーの実装が sun.com.xml の一部であるかどうかは本当にわからないことに注意してください。 *。プルパーサーの経験があり、何を使用し、その理由を教えてくれる人が必要です。

たとえば、Apache Abderaプロジェクト (私もアトム フィードを解析しています) は、その Axiom-api と geronimo-stax-api_1.0_spec を実装しているように見える Axiom 実装を使用しています。

4

2 に答える 2

3

JDK/JRE には Sun の SJSXP がバンドルされており、現時点では問題なく動作することを指摘することは別として、Stax ref impl (stax.codehaus.org) を使用しないことをお勧めします。何にも使用しないでください。多くのバグが残っており (多くは修正されていますが、初期バージョンはひどいものでした)、特に高速ではなく、すべての必須機能を実装していません。それを避けてください。

私は Woodstox に傾倒しています。Woodstox は XML 機能の最も完全な実装であり (Xerces と同等であり、これを実行できる唯一の他の Java XML パーサーです)、Sjsxp よりもパフォーマンスが高く、堅実なパーサーとジェネレーターのすべてを備えています --これが、最新の Java XML Web サービス フレームワークとコンテナーのほとんどが Woodstox をバンドルしている理由です。

または、超高性能が必要な場合は、Aaltoをチェックしてください。これは Woodstox の後継であり、機能は少ない (DTD 処理なし) ですが、多くの一般的なケースで 2 倍高速です。また、ノンブロッキング/非同期解析 (NIO ベースの入力など) が必要な場合、その機能を提供する既知の Java XML パーサーは Aalto だけです。

Axiom に関して: これはパーサーではありませんが、Woodstox のような Stax パーサーの上に構築されたツリー モデルであるため、車輪を再発明しませんでした。XmlPull は Stax API より数年先行しています。基本的に Stax の標準化は、XmlPull を使用している人々が見たものを気に入り、Sun と BEA がそのアプローチを標準化したいと考えた結果として生まれました。プロセスにはいくつかの摩擦があったため、最終的に XmlPull は Stax が完成したときに廃止されませんでしたが、後継者として Stax を考えることができます。XmlPull はまだモバイル デバイスに使用されています。Androidプラットフォームにはそれが含まれていると思います。

(免責事項: 私は Aalto と Woodstox の両方のプロジェクトに関与しており、SJSXP と Stax RI の両方に 12 以上のバグ修正を提供しています)

于 2011-10-15T17:37:24.883 に答える
1

Java 1.6 の時点で、バンドルされたプレーンな JRE 内に StaX 実装があります。あなたはそれを使うことができます。パフォーマンスが気に入らない場合は、woodstox にお立ち寄りください。

Axiom はまったく別のものであり、はるかに複雑です。Xmlpull は、いずれかの Stax 実装を支持して道に迷っているようです。

于 2011-10-07T19:32:34.643 に答える