44.6. 部分マーシャリング/アンマーシャリング
JAXB 2 は、XML ツリーフラグメントのマーシャリングとアンマーシャリングをサポートしています。デフォルトでは、JAXB は XML ツリー全体を操作するために、指定されたクラスの @XmlRootElement アノテーションを探します。生成されたコードに @XmlRootElement アノテーションがない場合や、ツリーの一部のみをアンマーシャリングする必要がある場合があります。
その場合、部分的なアンマーシャリングを使用できます。この動作を有効にするには、JaxbDataFormat でプロパティー partClass を設定する必要があります。Camel は、このクラスを JAXB アンマーシャラーに渡します。JaxbConstants.JAXB_PART_CLASS がエクスチェンジヘッダーの 1 つとして設定されている場合、その値は JaxbDataFormat の partClass プロパティーをオーバーライドするために使用されます。
マーシャリングを行うには、宛先名前空間の QName を含む partNamespace 属性を追加する必要があります。
JaxbConstants.JAXB_PART_NAMESPACE がエクスチェンジヘッダーの 1 つとして設定されている場合、その値は JaxbDataFormat の partNamespace プロパティーをオーバーライドするために使用されます。
JaxbConstants.JAXB_PART_NAMESPACE を通じて partNamespace を設定する際には、以下の例のように、その値を {namespaceUri}localPart の形式で指定する必要があることに注意してください。
.setHeader(JaxbConstants.JAXB_PART_NAMESPACE, constant("{http://www.camel.apache.org/jaxb/example/address/1}address"));
.setHeader(JaxbConstants.JAXB_PART_NAMESPACE, constant("{http://www.camel.apache.org/jaxb/example/address/1}address"));