从camel-context.xml中的属性中提取值

时间:2014-03-27 06:44:16

标签: xpath simplexml apache-camel xquery

输入如下所示,

<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),并将其与响应中的元素的文本字符串进行比较。

我尝试了一些使用camel的方法:xpath和camel:simple但是无法从属性中提取值。

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

要使用简单访问REQUEST属性,您可以执行以下操作:

${property.REQUEST}

使用xpath访问属性:

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

有关属性功能的更多信息,请访问此处 - https://camel.apache.org/xpath.html