58.4. 部分マーシャリング/アンマーシャリング
JAXB 2 は、XML ツリーフラグメントのマーシャリングとアンマーシャリングをサポートしています。デフォルトでは、JAXB は指定されたクラスの @XmlRootElement
アノテーションを探して、XML ツリー全体を操作します。これは便利ですが、常に有用であるわけではありません。たとえば、生成されたコードに @XmlRootElement アノテーションがない場合や、ツリーの一部だけを非整列化する必要がある場合などが挙げられます。
その場合、部分的なアンマーシャリングを使用できます。この動作を有効にするには、プロパティー partClass
を設定する必要があります。Camel は、このクラスを JAXB のアンマーシャラーに渡します。JaxbConstants.JAXB_PART_CLASS
がヘッダーの 1 つとして設定されている場合 (DataFormat に partClass プロパティーが設定されていても)、DataFormat のプロパティーが優先され、ヘッダーに設定されているものが使用されます。
マーシャリング用に、宛先名前空間の QName を含む partNamespace
属性を追加する必要があります。Spring DSL の例は、上記で確認できます。
JaxbConstants.JAXB_PART_NAMESPACE
がヘッダーの 1 つとして設定されている場合 (DataFormat で partNamespace プロパティーが設定されていても)、DataFormat のプロパティーが優先されて、ヘッダーに設定されているものが使用されます。JaxbConstants.JAXB_PART_NAMESPACE
を使用して partNamespace
を設定する際、それに対する値 \{namespaceUri}localPart を指定する必要があることに注意してください。
... .setHeader(JaxbConstants.JAXB_PART_NAMESPACE, simple("{http://www.camel.apache.org/jaxb/example/address/1}address")); ...