使用xpath进行动作过滤的Camel

时间:2016-02-23 16:06:40

标签: java xpath apache-camel

您好我正在学习Camel(使用Camel进行操作)。我在第2章(第49页)。过滤订单中的消息

给出以下代码:

from("jms:xmlOrders").filter(xpath("/order[not(@test)]"))
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
System.out.println("Received XML order: "
+ exchange.getIn().getHeader("CamelFileName"));
}
});

Q1。消息中的所有内容都是订单元素吗?例如。订单名称=电机,订单金额= 1或订单名称=电机但数量= 1?

Q2。 @如何工作?例如。考试?如果我想创建一个过滤器,过滤掉所有订单金额> gt的订单,该怎么办? 1,我该怎么做?

1 个答案:

答案 0 :(得分:2)

此代码假定来自jms队列“xmlOrders”的消息是xml,或者可以转换为xml。

此路由在此xml消息上应用xpath过滤器。你可以在Google上找到很多关于xpath的教程:它是xml片段的查询语言。 /order[not(@test)]表示“没有测试属性的< order />元素”。例如,您的查询可以是订单元素具有金额属性:"/order[@amount > 1]"

参见例如http://www.w3schools.com/xsl/xpath_intro.asp