2016-01-20 47 views
0

我有xml,標誌爲:<ns4:flag>false</ns4:flag>。我想讀這個標誌,並設置它的價值,FLAG屬性:在Apache Camel中將XPath表達式轉換爲布爾型

.setProperty(FLAG, xpath("//*[local-name()='flag']/text()", Boolean.class)) 

使用上面的代碼,我得到「真」值,而不是「假」。也嘗試resultType(Boolean.class)boolean()表達式中的xpath函數,但它沒有解決。任何想法我怎麼能做到這一點?

+0

您使用的是哪個版本的XPath?你究竟要給'.setProperty'作爲參數,以便將屬性設置爲false?最後一個參數('Boolean.class')是否必要? –

+0

你使用什麼版本的駱駝? –

+0

請發佈整個XML消息。它可能有多個'flag'元素嗎? – raulk

回答

3

在XPath,下面的表達式將返回布爾值true當文本內容等於字符串值"true",並返回布爾值false否則:

//*[local-name()='flag']/text() = 'true' 

xpathteseter.com demo

所以我猜,將XPath表達式更改爲上述XPath將會有效。

+0

不知道xml布爾是區分大小寫的,謝謝 – divideByZero

+0

而且好像boolean()調用是不必要的,在Camel中至少有 – divideByZero

+0

@divideByZero很可能是這樣,因爲在XPath中也是這樣。由於我沒有使用駱駝的經驗,我只是特別小心。那麼上面的XPath在沒有'boolean()'的駱駝中是否適合你? – har07