我正在通过交换对象发送soap xml。当我尝试在apache camel中使用xpath路由请求时,我无法正确执行它。请建议 我的Exchange正文xml是
<Envelope><Header>
</Header>
<Body>
<Choice>
<Selector>1</selector>
</Choice>
</Body>
</Envelope>
我的骆驼路线
from(direct:XX)
.to(when(xpath("body()/Choice/Selector/.",String.class)=='1')
.to("direct:X")
.otherwise()
.to("direct:Y")
答案 0 :(得分:1)
你的信封看起来不像那样。它必须是这样的:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
...
body()/Choice/Selector/.
不是Xpath。在XPath中没有像body()
这样的东西。
假设您在Exchange.body中有一个SOAP Body内容,由某些JAX-WS端点处理XPath将
/Choice/Selector
或/Choice/Selector/text()
如果是具有混合内容的元素
顺便说一句:如果您的Envelope
是真实示例,那么您尝试测试不要忘记修复XML - 您有错误<Selector>1</selector>
标记名称区分大小写。必须是<Selector>1</Selector>