Javaオブジェクトをxmlに変換するのに最適なAPIまたは最も広く使用されているapiが何であるか疑問に思っていました。オブジェクト内でxmlを返しますか?または、オブジェクト値を引き出して手動でドキュメントを作成する必要がある場合は、はるかに面倒ですか?
私はxerces、sax、およびjaxbについて読んでいます。このオープンソースのルートに沿って続けていきたいと思います。
ありがとう!
[〜#〜] jaxb [〜#〜]は間違いなくtheソリューションです。
どうして?まあ、それはJDK 6内であるため、メンテナンスされていないことは決してありません。
Java注釈を使用して、クラス、メソッド、およびフィールドのXML関連プロパティを宣言します。
注:JAXBを使用すると、XMLデータ(以前はJavaオブジェクトインスタンスからマーシャリングされていた)を簡単にオブジェクトインスタンスに「アンマーシャリング」することもできます。
JAXBのもう1つの素晴らしい点は、JAX-RSなどのその他のJava関連テクノロジーによってサポートされていることです(Java RESTful API、利用可能です) Java EE 6)の一部として。 JAX-RSは、JAXBオブジェクトをオンザフライで処理および受信できます。オブジェクトをマーシャリング/アンマーシャリングする必要はありません。 Netbeans をチェックアウトすることをお勧めします。これには、JAX-RSのすぐに使えるサポートが含まれています。はじめに このチュートリアル をお読みください。
編集:
「ランダム」(または外部)Javaオブジェクトをマーシャル/アンマーシャルするために、JAXBはかなり単純な可能性を提供します。XmlAdapterおよび既存のJava JAXB互換のクラス。このようなXmlAdapterの使用は、@ XmlJavaTypeAdapter-annotationを使用して行われます。
XStreamをご覧ください: http://x-stream.github.io
使用可能なJava 6は、注釈付きJavaオブジェクトをXMLに変換するAPIです。次のコードは、注釈付きオブジェクトをXML文字列に変換する方法を示しています
final JAXBElement <Type> o = new ObjectFactory()。createElement(new Type()); final Marshaller m = JAXBContext.newInstance(Type.class).createMarshaller(); //結果をより人間に読みやすくしたい場合にこれを行います。 m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT、true); m.marshal(o、System 。でる);
スキーマ検証を追加することにより、これをさらに拡張できます(非常に遅いことに注意してくださいが、デバッグには便利です)
final JAXBElement <Type> o = new ObjectFactory()。createElement(new Type()); final Marshaller m = JAXBContext.newInstance(Type.class).createMarshaller(); 最終スキーマスキーマ= SchemaFactory.newInstance( "http://www.w3.org/2001/XMLSchema").newSchema( getClass()。getResource("/META-INF /wsdl/schema.xsd")); m.setSchema(schema); m.marshal(o、System.out);
Typeが定義された要素である場合、JAXBElementへの型変換を行う必要はありません。 (つまり、アノテーション@XmlRootElementがあります)
JAXBの使用を決定した場合は、必ずJAXBContextをキャッシュしてください。 JAXBContext.newInstanceは非常に高価であることが知られています。 xmlへの変換がロギングで使用され、JAXBContext.newInstanceがキャッシュされない場合、20人の同時ユーザーによって呼び出されたときに最大5秒のパフォーマンスオーバーヘッドが発生するケースを文書化しました。
http://app-inf.blogspot.com/2012/10/performance-tuning-logging-right-way.html
これは、JAXBを使用している人をがっかりさせるものではありません。 JAXBContextがキャッシュされると、上記のリンクで説明したように、パフォーマンスが優れています。
Java.beans.XMLEncoderとJava.beans.XMLDecoderはどうですか?
http://www.rgagnon.com/javadetails/Java-0470.html の例
またね.
XMLBeans は、JAXBに似たもう1つのものです。私はしばらくJAXBを見ていないので、XMLBeansと比較するとかなり悪かったのですが、それは何年も前でした(そして、サードパーティのものよりもJDKのものを使用することを好みますが、今日までのXMLBeans)。