XMLにシリアル化する方法について何かを検索するたびに、Beanシリアライザーを見つけました。すべてが財産として宣言されなければならないようで、それは私の目的を破ります。複雑な階層を(もちろんプリミティブに到達するまで)XMLでシリアル化したいのですが、親オブジェクトとして(たとえば)辞書またはリストから始めます。
自動XMLシリアル化にはどのようなオプションがありますか?
2004年からJAXBへの参照をいくつか見つけましたが、それはまだ道のりですか?
XMLにシリアル化する方法について何かを検索するたびに、Beanシリアライザーを見つけました。すべてが財産として宣言されなければならないようで、それは私の目的を破ります。複雑な階層を(もちろんプリミティブに到達するまで)XMLでシリアル化したいのですが、親オブジェクトとして(たとえば)辞書またはリストから始めます。
自動XMLシリアル化にはどのようなオプションがありますか?
2004年からJAXBへの参照をいくつか見つけましたが、それはまだ道のりですか?
XStreamライブラリを試してください。それはあなたがそれに投げることができるどんな複雑なオブジェクト階層も簡単にシリアル化します。
特にNetBeansでJAXBのサポートを使用する場合、私はJAXBで多くの成功を収めてきました。私はそれがリストをサポートしているという事実を知っています。マップで試したことはありませんが、うまくいくと思います。他に何もない場合は、リストを含む単純なBeanを作成し、それをシリアル化されたBeanにします。
このメカニズムではXMLを介してメソッドを呼び出すことができるため、標準java.bean.XMLEncoder
/クラスを使用してコレクションをシリアル化できます。Decoder
出力は次のようになります。
<object class="java.util.ArrayList">
<void method="add">
<string>Hello</string>
</void>
<void method="add">
<string>World</string>
</void>
</object>
もちろん、これには弱点があります。たとえば、を簡単にシリアル化することはできませんCollections.emptyXXXX()
が、回避策があります。ただし、すべてが公的にサポートされているクラスのAPIに従って機能するため、永続的なXMLフォームはスキーマの変更に対して復元力があります。
これは、Javaオブジェクトにとって非常に便利な永続的なメカニズムであることがわかりました。