2014-03-27 25 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