Xpath无法在骆驼路线中工作

时间:2017-02-17 12:27:22

标签: xpath apache-camel

我正在通过交换对象发送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")

1 个答案:

答案 0 :(得分:1)

  1. 你的信封看起来不像那样。它必须是这样的:

     <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Header/>    
       <soapenv:Body>
        ...
    
  2. body()/Choice/Selector/.不是Xpath。在XPath中没有像body()这样的东西。

  3. 假设您在Exchange.body中有一个SOAP Body内容,由某些JAX-WS端点处理XPath将

    /Choice/Selector/Choice/Selector/text()如果是具有混合内容的元素

    顺便说一句:如果您的Envelope是真实示例,那么您尝试测试不要忘记修复XML - 您有错误<Selector>1</selector>标记名称区分大小写。必须是<Selector>1</Selector>