73.4. 部分 marshalling/unmarshalling
JAXB 2 支持 marshalling 和 unmarshalling XML 树片段。默认情况下,JAXB 会查找给定类上的 @XmlRootElement
注释,以便在整个 XML 树上运行。这非常有用,但并不总是 - 有时生成的代码没有 @XmlRootElement 注释,有时您只需要对树的一部分进行 unmarshall 部分。
在这种情况下,您可以使用部分 unmarshalling。要启用此功能,您需要设置属性 partClass
。Camel 会将此类传递到 JAXB 的 unmarshaler。如果 JaxbConstants. theB_PART_CLASS
设置为标头之一,即使 DataFormat 上设置了 partClass 属性,DataFormat 上的属性将被传递,并使用标头中设置的。
对于 marshalling,您必须添加带有目标命名空间的 QName 的 partNamespace
属性。您可以找到的 Spring DSL 示例。
如果 JaxbConstants. theB_PART_NAMESPACE
设置为标头之一,即使 DataFormat 上设置了 partNamespace 属性,DataFormat 上的属性将被传递,并使用标头中设置的。在将 partNamespace
设置为 JaxbConstants. theB_PART_NAMESPACE
时,您需要指定其值 \{[namespaceUri]}[localPart]
... .setHeader(JaxbConstants.JAXB_PART_NAMESPACE, simple("{http://www.camel.apache.org/jaxb/example/address/1}address")); ...
...
.setHeader(JaxbConstants.JAXB_PART_NAMESPACE, simple("{http://www.camel.apache.org/jaxb/example/address/1}address"));
...