2012-11-29 46 views
4

我正在使用JDeveloper編寫BPEL流程。當我嘗試從我的請求xml中提取節點的值時,我遇到了一個問題。從SOAP中抽取XPath Body請求BPEL中的字符串

請求XML將如下:

我能提取請求XML字符串了SOAP體,放入另一個字符串變量(比如strRequest)。

我想從這個strRequest變量中提取Temperature節點(它是200)的值。我會將它轉換爲一個數字並將其分配給另一個double類型的變量。

什麼應該是我的XPath查詢函數來提取溫度節點值?

number(bpws:getVariableData('strRequest', '', '<XPath query>')) 

我已經試過

bpws:getVariableData('strRequest', '', '/ConvertTemp/Temperature/') 
bpws:getVariableData('strRequest', '', '/ConvertTemp/Temperature') 
bpws:getVariableData('strRequest', '', 'Temperature') 
bpws:getVariableData('strRequest', 'strRequest', '/ConvertTemp/Temperature') 
bpws:getVariableData('strRequest', 'strRequest', 'Temperature') 

和similiar組合。 輸出:NaN的所有試驗上述

回答

0

嘗試bpws:getVariableData('strRequest', '', '/ConvertTemp/Temperature/text()')

,因爲「200」是一個text節點下Temperature節點

+0

感謝WEIMA和我道歉延遲迴應。但結果相同。 – Nikhil

0

你有一個默認的命名空間,所以也許你需要考慮到這一點。林不知道是否有在BPEL一種特殊的方式來做到這一點,但在一般的XPath語法,你會設置的XPath這樣:

/*[local-name() = "ConvertTemp" and namespace-uri() = "http://www.nikhil.net/"]/*[local-name() = "Temperature" and namespace-uri() = "http://www.nikhil.net/"]/text()

with xml as (select xmltype('<ConvertTemp xmlns="http://www.nikhil.net/"> 
    2  <Temperature>200</Temperature> 
    3  <FromUnit>degreeCelsius</FromUnit> 
    4  <ToUnit>degreeFahrenheit</ToUnit> 
    5 </ConvertTemp>') x from dual) 
    6 select extractvalue(x.x, '/*[local-name() = "ConvertTemp" and namespace-uri() = "http://www.nikhil.net/"]' 
    7 ||'/*[local-name() = "Temperature" and namespace-uri() = "http://www.nikhil.net/"]/text()') as temperature 
    8 from xml x 
    9/

TEMPERATURE 
-------------------------------------------------------------------------------- 
200