2012-11-30 122 views
2

我們正在轉向駱駝在我們的應用程序。我需要處理一些xml消息(獲取values \ compare狀態)。爲了解決這個問題,有一堆使用純java編寫的自定義處理器,但是我被要求使用camel特性來改變這個問題。 示例代碼:駱駝xpath toLowerCase幷包含

.choice() 
    .when().xpath("/Response/Header/Status = 'OK' ")...... 

這工作正常。

現在我需要與其他一些暗示來比較提示,要做到這一點,我需要設置的值:

/Response/Header/Hint 

降低的情況下,檢查包含。 如果 - /響應/頭/提示值(例如:

<Hint>MyHint</Hint> 

- 小寫含有「暗示」,那麼路線......否則.... 我不是專家的XPath和駱駝長相像有FO這樣一些變化,所以可以請你幫我這個。

還有一兩件事我很感興趣,我怎麼向前傳遞消息之前刪除整個<提示> MyHint < /提示>(刪除一些標籤)

你可以建議一些教程快速進入駱駝的xpath。

回答

1

您可以使用fn:lower-case(string)來比較How can I convert a string to upper- or lower-case with XSLT?中所述的提示。

關於去除<Hint>標籤的你多發posibilities,如:

  1. 使用XSLT過濾的內容如圖remove xml tags with XSLT
  2. ,呼叫Bean,做過濾
+0

使用XSLT過濾內容,如使用XSLT移除xml標籤所示。完美工作!我有測試失敗可能有些修剪空間被添加\刪除,但是,我可以看到消息正確轉換,謝謝!現在先嚐試 – user1424119

+0

很高興聽到這個消息,如果它解決了你的問題,你能接受答案嗎? (見http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

+0

我需要15點聲望才能接受!再次感謝! – user1424119

1

答案是這樣的:

.choice() 
    .when().xpath("/Response/Header/Status/text() = 'OK'") 
     .to("xslt:xsl/RemoveTag.xsl") 
      .choice().when().xpath("//Response/Header/Hint[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'hint')]").to 

RemoveTag.xsl很小改變remove xml tags with XSLT 非常感謝olivier roger!