您好我正在学习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,我该怎么做?
答案 0 :(得分:2)
此代码假定来自jms队列“xmlOrders”的消息是xml,或者可以转换为xml。
此路由在此xml消息上应用xpath过滤器。你可以在Google上找到很多关于xpath的教程:它是xml片段的查询语言。 /order[not(@test)]
表示“没有测试属性的< order />元素”。例如,您的查询可以是订单元素具有金额属性:"/order[@amount > 1]"