XML を POJO に、またはその逆に変換するにはどうすればよいですか? axis2 はその機能を提供しますか? または、Javaにはすでにこの機能が組み込まれていますか? または他のフレームワーク?ありがとう
5 に答える
JAXBを使用することを強くお勧めします。
JAXB は、Java クラスを XML および XML スキーマ (およびその逆) にマップする注釈フレームワークです。XML ドキュメントの抽象的な表現を操作する代わりに、モデリングしているドメインにより近い実際の Java オブジェクトを操作できるため、非常に便利です。
また、JAXB を使用して Java オブジェクトを XML に自動的にシリアライズ/デシリアライズする RESTful Web サービスを構築する必要がある場合は、次の本を読むことをお勧めします。
Oreilly RESTful Java with JAX-RS - (第6章 JAX-RSコンテンツ・ハンドラ)
すぐに利用できるフレームワークが必要な場合は、xstreamをご覧ください。
さまざまなフレームワークがあります: Jaxb、XStream、JiBX など。
役立つチュートリアル:
http://thomassundberg.wordpress.com/2010/01/19/how-to-convert-a-pojo-to-xml-with-jaxb/
http://numberformat.wordpress.com/2009/11/01/using-jaxb-to-convert-between-xml-and-pojos/
http://soadev.blogspot.com/2011/07/jaxb-converting-pojo-to-xml-and-vice.html
http://jibx.sourceforge.net/binding/tutorial/binding-tutorial.html
XPath だけでそれを行う方法を説明する記事がここにあります。
また、SO hereに関するこの同様の議論もチェックしてください。
XMLEncoder
これの単純なバージョンは、 andXMLDecoder
クラスを使用してjava>=1.4に組み込まれています。
簡単な例
使用法は非常に簡単です。
XMLEncoder xmlEncoder = new XMLEncoder( outputStream );
xmlEncoder.writeObject( myObject );
あなたに次のようなものを与えるでしょう
<?xml version="1.0" encoding="UTF-8"?>
<java>
<object class="your.class.Name">
<void property="fieldName">
<boolean>true</boolean>
</void>
etc. etc. etc.
</object>
</java>
単に行うオブジェクトを読み戻すには
XMLDecoder xmlDecoder = new XMLDecoder( inputStream );
MyClass thing = (MyClass) xmlDecoder.readObject();
これが私がグーグルで見つけたランダムなチュートリアルです:
http ://www.avajava.com/tutorials/lessons/how-do-i-write-a-javabean-to-an-xml-file-using-xmlencoder.html
この方法は驚くほど柔軟ではありませんが、組み込みで構成が不要で、非常に予測可能です。良い出発点かもしれません。
いくつかの追加の注意:
xml形式の概要を説明するドキュメントは次のとおりです。http://java.sun.com/products/jfc/tsc/articles/persistence3/
これが私が見つけた別のリンクです。これは、xmlencoder
柔軟性を高めるためにjaxb(jdk> = 1.6に組み込まれている)に移行する方法を説明しています:http:
//en.newinstance.it/2010/08/05/javabeans-to-xml -with-no-libraries /
JAXB http://jaxb.java.net/または XMLBeans http://xmlbeans.apache.org/を試すことができます