java - 如何在 Camel 中将未编码的对象设置为交换属性

标签 java xml apache-camel unmarshalling

我是 Camel 新手,我陷入了一个看似简单的点。我需要解码交换中的 2 个 xml,然后将相应的 POJO 传递给处理器。我在想是否可以解码一个 xml,将其设置为交换属性,并对另一个 xml 重复相同的操作。最后,在处理器中,我将检索属性并可以在处理器中执行所需的逻辑。 我能够成功解码 xml,并获得 Exchange.in.body 中的最后一个 POJO。但是谁能告诉我在交换属性中设置未编码对象的结果的正确方法是什么? 我在下面尝试过,但它不起作用:

    <setProperty propertyName="foo">
        <unmarshall ref="modelref" id="model_id"" />
    </setProperty>

这里 modelref 是对来自camel的org.apache.camel.model.dataformat.JAXBDataFormat类的bean的引用。

有人可以给我一些解决这个问题的建议吗?

最佳答案

Unmarshal 不是 setProperty 元素的有效子元素。 假设您已经执行了某种拆分,现在想要解码其中一个 XML 并将其设置为 header ,您可以执行如下操作:

<unmarshal ref="modelref" id="model_id" />
<setProperty propertyName="foo">
    <simple>${body}</simple>
</setProperty>

关于java - 如何在 Camel 中将未编码的对象设置为交换属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46689630/

相关文章:

java - Camel CXF : compressing response with CXFOutInterceptor throws classcast exception

c# - 更新 xml 中的 CDATA

c - libxml2 中奇怪的 XPath 行为

xpath - 在带有 CXFRS 端点和 xPath 的 Camel 中遇到基于内容的路由问题

java - 使用 Camel 发送带有自定义 MIME 消息的邮件

python - lxml.etree : Start tag expected, '<' 未找到,第 1 行,第 1 列

java - 仅从字符串标签中提取值

java - 使用什么数据挖掘应用程序?

java - 比较连接字符串和普通字符串

java - 导航栏按钮在从服务绘制的布局上没有响应