我可能在這裏做錯了什麼,但我似乎沒有得到使用split()。方法組合時的預期結果。傳入消息之間的傳入xml稍有不同,其中的elementKey節點描述了我們要尋找的XML節點。使用自定義拆分方法的駱駝分割器
from("direct:fromWhereEver")
...
.setHeader("dynamicToken", xpath("//*[local-name()='elementKey']/text()").stringResult())
...
.split().method(DynamicSplitToken.class, "extractTokens")
.to("direct:outgoing")
.routeId("BhahBlah")
我有以下的方法中定義的用於由路線
public class DynamicSplitToken {
public static Expression extractTokens(Exchange exchange){
String splitToken = exchange.getIn().getHeader("dynamicToken").toString();
TokenizeLanguage tok = new TokenizeLanguage();
tok.setXml(true);
tok.setIncludeTokens(true);
tok.setToken(splitToken);
return tok.createExpression();
}
}
現在XML標籤是從消息拉動沒有問題,但所得到的「主體」被提取並推通過包含<tagname>...</tagname>
匹配上面的elementKey與之間沒有子節點/元素。我希望接收標籤之間的一切,也類似於如果我用下面的
.split().tokenizeXML("tagname")
使用此方法時,我得到的標籤的全部內容和標籤之間的所有節點,unforunately我無法通過一個{header.dynaimcToken}給tokenizeXML ProcessorDefinition,否則我不需要在這裏尋求幫助。
我在哪裏出了錯這裏,我知道我在想念的方法處理後的重要一步,但無法確定是什麼
現在我們都堅持與駱駝2.9(保險絲ESB)如果有差別
乾杯 馬克
+1對於動態地設置XPath表達式的想法。 –