169.5. Partial marshalling/unmarshalling


此功能是 Camel 2.2.0 的新内容。
JAXB 2 支持 marshalling 和 unmarshalling XML 树片段。默认情况下,JAXB 会查找给定类上的 @XmlRootElement 注释,以便对整个 XML 树进行操作。这很有用,但并不总是 - 有时生成的代码没有 @XmlRootElement 注释,有时您需要 unmarshall 仅是树的一部分。
在这种情况下,您可以使用部分 unmarshalling。要启用此功能,您需要设置属性 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"));
   ...
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.