2010-11-29 13 views
1

いくつかのオブジェクトをXMLにマーシャリングするとき、結果のXMLオブジェクトのそれぞれに追加フィールドを挿入する必要があります。その目的は、ソースオブジェクトを変更するのではなく、その情報を出力XMLに挿入することです。JAXBマーシャリングで追加フィールドを挿入

これが可能ならば、どんな考えですか?

+0

XMLをマーシャリングするオブジェクトのタイプ(StAX、SAX、DOM、stream)はありますか?また、オブジェクトデータに基づいた余分なコンテンツや、タイムスタンプや作成者のような別のコンテンツもありますか? –

+0

私はおそらくDOMを使用してXMLにJavaオブジェクトをマーシャリングしていますが、まだ決定していません。余分なコンテンツはオブジェクトの外部にあるもので、オブジェクトが変更されたかどうかを示す新しいフィールドです。 –

答えて

3

は、いくつかの可能なアプローチがあります。ここでは、余分なフィールドを持つクラスのバージョンを作成します(適応されたクラスはオリジナルを拡張することができます)。アダプタ間で変換します。クラスの代替バージョンには余分なフィールドが含まれているので、それはマーシャリングします。

2.バインダー

あなたマーシャルターゲットがDOMである場合は、JAXBのバインダーを活用できます。これは情報セットの保存を目的としていますが、マーシャリングの後、オブジェクトとDOMノードの間のリンクを維持します。マーシャルが完了したら、バインダーを使用してオブジェクトの関連ノードを見つけて更新できます。

3.

ラップ出力対象

あなたの出力先が適切な状態に達したとき、あなたがする追加イベントを引き起こす可能性のContentHandlerまたはてXMLStreamWriterのようなものがある場合ネストされたマーシャルターゲットに対して呼び出されます。

+0

偉大な答え。どうもありがとう。 –

1

JAXBを使用してDOMにマーシャリングし、プログラムでDOMに追加情報を挿入し、DOMをXMLに再マーシャリングするのが最も簡単な方法です。

醜いと非効率ですが、それは私が考えることができる最高です。

1. XmlAdapterの

あなたはJAXBのXmlAdapterのを活用できます。

関連する問題