いくつかのオブジェクトをXMLにマーシャリングするとき、結果のXMLオブジェクトのそれぞれに追加フィールドを挿入する必要があります。その目的は、ソースオブジェクトを変更するのではなく、その情報を出力XMLに挿入することです。JAXBマーシャリングで追加フィールドを挿入
これが可能ならば、どんな考えですか?
いくつかのオブジェクトをXMLにマーシャリングするとき、結果のXMLオブジェクトのそれぞれに追加フィールドを挿入する必要があります。その目的は、ソースオブジェクトを変更するのではなく、その情報を出力XMLに挿入することです。JAXBマーシャリングで追加フィールドを挿入
これが可能ならば、どんな考えですか?
は、いくつかの可能なアプローチがあります。ここでは、余分なフィールドを持つクラスのバージョンを作成します(適応されたクラスはオリジナルを拡張することができます)。アダプタ間で変換します。クラスの代替バージョンには余分なフィールドが含まれているので、それはマーシャリングします。
2.バインダー
あなたマーシャルターゲットがDOMである場合は、JAXBのバインダーを活用できます。これは情報セットの保存を目的としていますが、マーシャリングの後、オブジェクトとDOMノードの間のリンクを維持します。マーシャルが完了したら、バインダーを使用してオブジェクトの関連ノードを見つけて更新できます。
3.
ラップ出力対象あなたの出力先が適切な状態に達したとき、あなたがする追加イベントを引き起こす可能性のContentHandlerまたはてXMLStreamWriterのようなものがある場合ネストされたマーシャルターゲットに対して呼び出されます。
偉大な答え。どうもありがとう。 –
JAXBを使用してDOMにマーシャリングし、プログラムでDOMに追加情報を挿入し、DOMをXMLに再マーシャリングするのが最も簡単な方法です。
醜いと非効率ですが、それは私が考えることができる最高です。
1. XmlAdapterの
あなたはJAXBのXmlAdapterのを活用できます。
XMLをマーシャリングするオブジェクトのタイプ(StAX、SAX、DOM、stream)はありますか?また、オブジェクトデータに基づいた余分なコンテンツや、タイムスタンプや作成者のような別のコンテンツもありますか? –
私はおそらくDOMを使用してXMLにJavaオブジェクトをマーシャリングしていますが、まだ決定していません。余分なコンテンツはオブジェクトの外部にあるもので、オブジェクトが変更されたかどうかを示す新しいフィールドです。 –