我有一个xml,我使用split标记在Spring DSL中进行处理。我所做的基本上是在xml中搜索一个值,当我找到这个值时,我需要获得另一个标记的值,同一元素的子元素,并保存到一个标头中。这个操作看起来很简单,但我无法恢复split之外的标头,我需要这样做。我尝试了标头和属性,结果是一样的。
请帮我找出我做错了什么。
代码示例:
<route>
...
<split>
<xpath>//FatherTag/ChildTag</xpath>
<to uri="direct:processingRoute"/>
</split>
</route>
<route>
<from uri="direct:processingRoute"/>
<choice>
<when>
<simple>....</simple>
<setHeader headerName="foo">
<constant>test</constant>
</setHeader>
</when>
</choice>
</route>
2条答案
按热度按时间2exbekwf1#
您需要定义一个
AggregationStrategy
。从Camel Splitter:拆分器返回的内容
Camel 2.3及更高版本:
默认情况下,拆分器将返回原始输入消息。
适用于所有版本
您可以通过将自己的策略作为AggregationStrategy提供来覆盖此策略。
您的
AggregationStrategy
需要检查每个子标记的相应标头集,并将其传递到拆分操作的结果Exchange输出邮件上。qoefvg9y2#
要保留拆分函数内部设置的头或属性,需要使用聚合策略,如果其简单头且需要避免聚合策略,则在拆分函数之前设置一个交换属性,并将ArrayList作为值
现在在拆分功能内如果您再次用列表中的另一个项目更新此属性,则您将能够在拆分功能结束后检索它,并且它将在每个拆分交换机和父交换机中可用。
输出:[一,二]