63.4. 部分摘要/发布
JAXB 2 支持 marshalling 和 unmarshalling XML 树片段。默认情况下,JAXB 在给定类上查找 @XmlRootElement
注释,以便在整个 XML 树上运行。这很有用,但有时生成的代码没有 @XmlRootElement 注释,有时您只需要不总结树的一部分。
在这种情况下,您可以使用部分卸载。要启用此行为,您需要设置属性 partClass
。Camel 将把类传递给 JAXB 的 unmarshaler。如果 JaxbConstants.JAXB_PART_CLASS
被设置为一个标头(即使 dataFormat 设置了 partClass 属性),DataFormat 上的属性会被覆盖,并且使用标头中设置的标头。
对于 marshalling,您必须使用目标命名空间的 QName 添加 partNamespace
属性。您可以找到上述 Spring DSL 示例。
如果 JaxbConstants.JAXB_PART_NAMESPACE
设置为标题之一(即使 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")); ...