如何在Camel中将unmarshalled对象设置为exchange属性

时间:2017-10-11 13:35:15

标签: 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的引用。

有人能给我一些解决方法吗?

1 个答案:

答案 0 :(得分:1)

Unmarshal不是setProperty元素的有效子元素。 如果您已经执行了某种分割,现在想要解组其中一个XML并设置为标题,那么您可以执行以下操作:

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