将值传递给路由中的自定义组件

时间:2014-02-07 10:56:34

标签: expression apache-camel

我正在尝试将值传递给以下路由中的自定义组件,而不是在处理器等中使用交换对象。

输入xml消息

<root>
     <node1>vlaue1</node1>
     <node2>value2</node2>
  </root>



.to("someComponent://foo?param1=staticvalue&param2=${need to send node2 value here})

所以我试过

.to("someComponent://foo?param1=staticvalue&param2=${request.body.root.node2}) 
    我知道的
  • 无效

    。为(“someComponent:// FOO的param1 = staticvalue&安培; param2的= $ {request.header.CamelFileName})

    也不起作用

任何人都可以指出我正在做的错误。

感谢。

此致 Senthil Kumar Sekar

1 个答案:

答案 0 :(得分:0)

使用XPath并将值存储在标题中:

from("file:...")
    .setHeader("myNodeValue", xpath("/root/node2/text()"))
    .to("someComponent://foo?param1=staticvalue&param2=${header.myNodeValue})

不知道someComponent,可以按如下方式测试此方法:

from("file:...")
    .setHeader("myNodeValue", xpath("/root/node2/text()"))
    .log("node2: ${header.myNodeValue}");

或者,如果在其他地方需要该属性,则将值存储在属性中,而不依赖于消息:

from("file:...")
    .setProperty("myNodeValue", xpath("/root/node2/text()"))
    .to("someComponent://foo?param1=staticvalue&param2=${property.myNodeValue})