48.6. 部分总结 / unmarshalling
JAXB 2 支持 marshalling 和 unmarshalling XML 树片段。默认情况下,JAXB 在给定类上查找 @XmlRootElement 注释,以在整个 XML 树上运行。有时生成的代码没有 @XmlRootElement 注释,有时您需要 unmarshall 只是树的一部分。
在这种情况下,您可以使用 partial unmarshalling。若要启用此功能,您需要在 JaxbDataFormat 上设置属性 partClass。Camel 会将此类传递给 JAXB unmarshaller。如果将 JaxbConstants.JAXB_PART_CLASS 设置为交换标头之一,则其值用于覆盖 JaxbDataFormat 上的 partClass 属性。
对于 marshalling,您必须使用目标命名空间的 QName 添加 partNamespace 属性。
如果将 JaxbConstants.JAXB_PART_NAMESPACE 设置为一个交换标头,则其值用于覆盖 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"));