在apache camel中使用Xtring表达式中的Substring:error

时间:2012-09-12 11:11:24

标签: xml xpath substring apache-camel

我想整理一个SOAP标头的节点,以便在apache camel中执行粘性负载平衡。 为此我使用xpath 我的xpath表达式如下所示:

.loadBalance().sticky(xpath("substring(string(/*[local-name()='Envelope']/*[local-name()='Header']/*[local-name()='ReplyTo']/*[local-name()='ReferenceParameters']/*[local-name()='ServiceGroupId']/text()), 10)"))
.to(BE1,BE2); 

但是当我执行它时,我收到一个错误:org.apache.camel.builder.xml.InvalidXPathExpression: Invalid xpath:

所以我认为我的xpath表达式应该存在一些问题,因此我创建了一个小的java程序,它可以执行相同的操作并执行相同的操作。 使用java,我从我的xml中获得了所需的元素。但是我在apache camel中遇到了这个错误。

我在这里做错了吗?任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

我搞定了!

代码如下:

.loadBalance().sticky(env.xpath("substring(string(/soapenv:Envelope/soapenv:Header/wsa:ReplyTo/wsa:ReferenceParameters/axis2:Serv‌​iceGroupId/text()), 10)", String.class)) 
          .to(BE1,BE2); 

其中env是我的命名空间,BE1和BE2是后端服务器!