2014-03-27 26 views
1

输入看起来像下面,提取一个值

<book author="ABC" type="Children"> 
    <id>123</id> 
    <name>XYZ</name> 
</book> 

我已经设置了上述属性在XML路由为:

<camel:setProperty propertyName="REQUEST"> 
    <camel:xpath>/node()</camel:xpath> 
</camel:setProperty> 

然后我做一些其他处理,并基于新的响应,我想从该属性中提取作者的值(即ABC),并将其与响应中元素的文本字符串进行比较。

我尝试了几种使用骆驼的方法:xpath和camel:简单但我无法从属性中提取值。

什么是提取此属性的正确方法?

回答

0

我不知道是否有可能使用属性,但你应该可以使用标题。

首先:

<setHeader headerName="REQUEST"> 
    <xpath>/node()</xpath> 
</setHeader> 

然后,如果你想设置另一头只有笔者值:

<setHeader headerName="REQUEST2"> 
    <xpath headerName="REQUEST" resultType="java.lang.String">/book/@author</xpath> 
</setHeader> 

或者,如果你想以评估值作为<choice>条件:

<when> 
    <xpath headerName="REQUEST">/book/@author = 'ABC'</xpath> 
+0

这headerName XPath中只骆驼2.11的作品,我们使用的是2.10。另外,我只需要使用propery的上面的一个。 – SAM

0

要使用简单访问REQUEST属性,您可以这样做:

${property.REQUEST} 

要使用XPath访问属性:

<camel:xpath> 
    function:properties("REQUEST")/[add your xpath expression here] 
</camel:xpath> 

在性能功能更多信息可以在这里找到 - https://camel.apache.org/xpath.html