XMLマーシャリング/アンマーシャリング用のJavaでは、JAXB、JIBX、CASTOR、ADBなどを使用できます。しかし、これらのうち、最も一般的で一般的に使用されているのはどれですか? または、利用可能な他のユーティリティはありますか?
4 に答える
標準は JAXB ( JSR 222 ) で、この名前の有名なプロジェクトがリファレンス実装です。JAXB 1.0 とは異なり、JAXB 2.0 RI は非常に優れており、私はこれをよく使用しています。他のライブラリは JAXB 標準を実装しています (Castor と JiBX だと思いますが、それらの経験はありません)。
私はXStreamも使用しましたが、これは非常に簡単でシンプルでしたが、独自の API があります。
https://bindmark.dev.java.net/old-index.html以外のベンチマークは知りません- 4 年前のものであることに注意してください。おそらく、そのアイデアや使用可能なコードを使用して、自分でいくつかのテストを実行できます。
私は個人的にXMLBeansを使用しています。私は JAXB よりも好きです (そして、Sun のものはより「標準的」であるべきなので、私は Sun のものに偏っています)。しかし、私はそれの一般的に使用される部分について話すことはできません.
次の理由により、JAXB が推奨されます。
- JDK1.6 以降を使用している場合、JAXB は JDK 1.6 にバンドルされているため、追加の jaxb ライブラリは必要ありません。
- には
jaxbMarshaller.unmarshal()多くのオーバーロードされたメソッドが含まれています。自分に合ったものを見つけてください。 - JAXB は非常に理解しやすく、操作も簡単です。必要なのは、4行のコードに加えて、
@XmlRootElementいくつかの注釈です@XmlAccessorType - Java での XML ファイルの変更は、DOM や SAX などの他の XML パーサーと比較して、JAXB を使用するとはるかに簡単です。これは、POJO のみを扱うためです。
- JAXB は、DOM や SAX パーサーよりもメモリ効率が優れています。
- JAXB が動作するために XML スキーマは必要ありません。対応するJavaクラスを生成するためにXMLスキーマを使用できますが、膨大な数のクラスになる大規模で複雑なXMLスキーマがある場合は非常に便利ですが、単純な使用法では、JAXBパッケージによって提供される関連するXML注釈でオブジェクトに注釈を付けることができます。
java.xml.bindingそして、あなたは行ってもいいです。
私は CASTOR マッピングを使用していますが、XML に慣れていれば非常に使いやすいと思います。必要なのは、Java オブジェクトを作成し、マッピング ファイルを使用してそれらを XML にマッピングすることだけです。XML が複雑な場合は、マッピング ファイルが必要です。単純で単純な XML の場合、CASTOR 自体が XML 要素名に一致するそれぞれの Java クラスを探します [Castor はこれを行うために Java の Reflection API を使用します]。