我尝试根据传入的XML动态创建RESTful URL:
输入:
<message>
<request name="John"/>
</message>
我想像这样路由它:
http://myhost:8080/myservice?name=John
我知道如何使用setHeader设置网址参数,但我不知道如何从输入消息中提取属性值。我正在寻找的SOOPER_XPATH表达式可能如下所示:
from("direct:start")
.setHeader(Exchange.HTTP_QUERY,
simple("name=$SOOPER_XPATH(${in.body}, '//request/@name')")
.to("http://myhost:8080/myservice").log("Received response: ${in.body});
答案 0 :(得分:1)
可能有几种方法可以做到这一点,这就是我们在其中一个项目中所做的,工作正常:
exchange.getIn().setHeader(XPathBuilder.xpath("/message/messageID/text()").evaluate(exchange,String.class));
我们在处理器内部执行此操作,但您也可以直接在路径中使用XPathBuilder。
这只是让xpath正确的问题。我通常使用像http://www.xpathtester.com/xpath这样的工具来测试我的xpath。
答案 1 :(得分:0)
要在Processor
之外的路线中设置标题,请使用:
from("direct:start")
.setHeader(Exchange.HTTP_QUERY, xpath("//request@name").stringResult())
.to("http://myhost:8080/myservice").log("Received response: ${in.body}");