类似于:
<route>
<from uri="...">
<to uri="...">
<to uri="...">
</route>
问题:如何在步骤1中将参数存储在Spring DSL中,以便我可以在后面的步骤3中使用它们?
因此,我想从步骤1中收到的消息的XML主体中提取XML参数并将它们放入变量中,然后我可以使用这些变量来编写要在步骤3中发送的消息。
为了提取参数,我正在考虑使用XPATH。看起来没问题,但我只是不知道如何将XPATH的输出放入变量中,然后再使用该变量......(语法??)
注意:正如您所看到的,我的开发知识相当有限......对不起。但如果有人可以帮助解决这个问题,那将会很棒。)。
答案 0 :(得分:18)
您可以在Exchange属性或邮件标题中设置商店数据,如下所示......
.setHeader("ID", XPathBuilder.xpath("/order/@id", String.class))
.setProperty("ID", XPathBuilder.xpath("/order/@id", String.class))
然后从Exchange中的bean /处理器中检索它们......就像这样......
String propId = (String) exchange.getProperty("ID");
String headerId = (String) exchange.getIn().getHeader("ID"); }
答案 1 :(得分:3)
我给你举一些例子:
<setHeader headerName="token">
<constant>someValue</constant>
</setHeader>
<setHeader headerName="userName">
<simple>${properties:userName}</simple> //from config
</setHeader>
<setProperty propertyName="bodyBkp">
<simple>${in.body}</simple>
</setProperty>
<setProperty propertyName="orderNumber">
<xpath resultType="String">//item[1]/orderNumber/text()</xpath>
</setProperty>
吸气剂
${exchangeProperty[orderNumber]}
${in.headers.token}
<强>文档强>
检查简单表达语言: http://camel.apache.org/simple.html
有时候查看Camel的测试用例也很有帮助,特别是对于Spring DSL: