ここには、JAXBがスライスされたパン以来の最大のものであると誓う男がいます。 Stack OverflowユーザーがJAXBのユースケースをどのように考えているのか、そしてそのケースにとって何が良いまたは悪いソリューションであるのかを知りたいです。
私はXMLを操作するためのJAXBの大ファンです。基本的に、この問題の解決策を提供します(XML、Javaデータ構造、およびXMLスキーマに精通していると仮定しています):
XMLでの作業は困難です。基本的にはテキストファイルであるXMLファイルを取得し、それを何らかのプログラムで操作できるデータ構造に変換する方法が必要です。
JAXBは、ユーザーが作成したXMLスキーマを取得し、そのスキーマに対応するクラスのセットを作成します。 JAXBユーティリティは、そのXMLを操作するためのデータ構造の階層を作成します。
次に、JAXBを使用してXMLファイルを読み取り、生成されたクラスのインスタンスを作成します-XMLからのデータをロードします。 JAXBは逆も行います。Javaクラスを取り、対応するXMLを生成します。
JAXBは使いやすく、Java 1.6(1.5を使用している場合はJAXB .jarをダウンロードできます。)が付属しているため)JAXBが好きです。私の経験では、「データ」に集中できるように、「XML」を抽象化するまともな仕事をしています。
したがって、あなたの質問に答えるには、小さなXMLファイルの場合、JAXBが過剰になる可能性があります。 XMLスキーマを作成および保守し、データ構造にJavaクラスを使用する「標準テキストブックメソッド」を使用する必要があります。(メインクラス、「ノード」を表す小さな内部クラス、そのため、JAXBは、アプリケーションの「プリファレンス」の単純な線形リストにはあまり適していません。
しかし、かなり複雑なXMLスキーマがあり、その中に大量のデータが含まれている場合、JAXBは素晴らしいです。私のプロジェクトでは、バイナリ(Cプログラムによって消費される)とXML(人間がそのデータを消費および変更できるようにする)の間で大量のデータを変換していました。結果のXMLスキーマは自明ではありませんでした(階層の多くのレベル、一部のフィールドは繰り返すことができましたが、他のフィールドは繰り返すことができませんでした)。
これを使用しない理由は次のとおりです。パフォーマンスが低下します。マーシャリングとアンマーシャリングの際には、かなりのオーバーヘッドがあります。 JiBXなど、XMLオブジェクトバインディング用の別のAPIを検討することもできます。 http://jibx.sourceforge.net/
私はいつも仕事でJAXBを使用していますが、本当に気に入っています。常に変化する複雑なXMLスキーマに最適で、特にXMLファイル内のタグのランダムアクセスに適しています。
私はポン引きするのは嫌いですが、ブログを始めたばかりで、これは文字通り私が投稿した最初のものです!
こちらをご覧ください:
http://arthur.gonigberg.com/2010/04/21/getting-started-with-jaxb/
「ORM for XML」です。 WS Death Starシステム用にJAX-WSと一緒に最もよく使用されます(実際、Sunの実装は一緒に開発されます)。
JAXBは、XMLスキーマ(xsd
)として定義された外部XML仕様にコーディングする必要がある場合に最適です。
たとえば、取引アプリケーションがあり、取引をUber Lame Trade Reporting Appに報告する必要があり、_ultra.xsd
_が与えられていますうまくやっていくために。 _$Java_HOME/bin/xjc
_コンパイラを使用して、XMLをJavaクラス(たとえば、UltraTrade
)]の束に変換します。
次に、単純なadapterレイヤーを記述して、取引オブジェクトをUltraTrades
に変換し、JAXB
を使用してデータをマーシャリングできます。ウルトラコープに向かいます。 Much取引をXML形式に変換することを台無しにするよりも簡単です。
すべてが壊れるのは、Ultra-Corpが実際に独自の仕様に従っていない場合であり、_xsd:float
_としてダウンしている取引price
は、実際にはdouble
として表現されるべきです!
なぜJAXBが必要なのか? Webサービスのリモートコンポーネント(Javaで記述)は、XMLを使用して相互にメッセージを交換します。 なぜXML? XMLは、リソースが限られているネットワークでメッセージを交換するための軽量オプションと見なされているためです。そのため、これらのXMLドキュメントをオブジェクトに、またはその逆に変換する必要が頻繁にあります。例:Simple Java POJO Employeeは、従業員データをリモートコンポーネントに送信するために使用できます(Javaプログラム)。
class Employee{
String name;
String dept;
....
}
このPojoは、次のようにXMLドキュメントに変換(マーシャル)する必要があります。
<Employee>
<Name>...</Name>
<Department>...</Department>
</Employee>
リモートコンポーネントで、Java XMLドキュメントのオブジェクト(Un-Marshall)に戻ります。
JAXBとは?
JAXBは、マーシャリングとアンマーシャリングのこの操作を実行するためのライブラリまたはツールです。この頭痛からあなたを解放します。
JIBXもチェックアウトできます。また、非常に優れたxmlデータバインダーでもあり、OTA(Open Travel Alliance)にも特化しており、AXIS2サーバーでサポートされています。パフォーマンスと互換性を探しているなら、あなたはそれをチェックアウトすることができます:
JAXBは、デフォルトのマーシャリング最適化によりパフォーマンスを改善します。 JAXBは、XMLドキュメントとの間でJavaオブジェクトを読み書きするためのプログラマAPIを定義するため、Javaを介したXMLの読み書きを簡素化します。