2016-02-23 20 views
0

嗨,我正在學習駱駝(使用駱駝行動)。我在第2章(第49頁)。駱駝在行動中使用xpath篩選

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? Q2302。 @如何工作?例如。考試?如果我想創建一個過濾器來過濾所有訂單金額大於1的訂單,我該怎麼做?

回答

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