如何使用camel

时间:2018-03-27 11:11:46

标签: xpath apache-camel

我有一个在我的交换体中设置的http响应。我必须从该xml中提取一些值。我发现最好的方法可能是使用camel-xpath。我必须从根标签级别提取值。例如,在下面的xml中,我想要提取的值将是attribute1。

<rootTag attribute1="value1">
<child1/>
</rootTag>

我看到了一些使用命名空间的例子。但我认为我没有在这里使用命名空间的范围。如果是这样,我怎么能这样做。难道我不能直接从交易所的主体中提取它

2 个答案:

答案 0 :(得分:1)

您可以将您的属性提取到邮件标题:

.setHeader("MyHeader").xpath("/rootTag/@attribute1", String.class)

或将属性放入正文:

.setBody().xpath("/rootTag/@attribute1", String.class)

这里不需要名称空间..

@Gilles Quenot对于xpath表达式肯定是正确的。

答案 1 :(得分:0)

这是您需要的Xpath:

string(/rootTag/@attribute1)

在shell中进行测试

$ xmlstarlet sel -t -v '/rootTag/@attribute1' file

$ xmllint --xpath 'string(/rootTag/@attribute1)' file

$ xidel -se '/rootTag/@attribute1' file

输出:

value1