我有一个在我的交换体中设置的http响应。我必须从该xml中提取一些值。我发现最好的方法可能是使用camel-xpath。我必须从根标签级别提取值。例如,在下面的xml中,我想要提取的值将是attribute1。
<rootTag attribute1="value1">
<child1/>
</rootTag>
我看到了一些使用命名空间的例子。但我认为我没有在这里使用命名空间的范围。如果是这样,我怎么能这样做。难道我不能直接从交易所的主体中提取它
答案 0 :(得分:1)
您可以将您的属性提取到邮件标题:
.setHeader("MyHeader").xpath("/rootTag/@attribute1", String.class)
或将属性放入正文:
.setBody().xpath("/rootTag/@attribute1", String.class)
这里不需要名称空间..
@Gilles Quenot对于xpath表达式肯定是正确的。
答案 1 :(得分:0)
这是您需要的Xpath:
string(/rootTag/@attribute1)
$ xmlstarlet sel -t -v '/rootTag/@attribute1' file
$ xmllint --xpath 'string(/rootTag/@attribute1)' file
$ xidel -se '/rootTag/@attribute1' file
value1