2015-11-03 62 views
0

有人可能會爲以下問題推薦解決方案。在xpath中放大整數標籤值

我有這樣的xml:

<nuts1:SettlementRequest> 
      <!--Optional:--> 
      <nuts1:MeterReadingId>1842869</nuts1:MeterReadingId> 

我需要採取MeterReadingId字段中,添加到它1和輸入這個值成應該像的下一個請求:

</nuts:Header> 
     <!--Optional:--> 
     <nuts1:MeterReadingId>1842870</nuts1:MeterReadingId> 

第一我用這樣的代碼:

//*:SettlementRequest/*:MeterReadingId/text()+ 1 

但SOAPUI返回的值如

MeterReadingId [1.84287E6] 

那就是爲什麼我寫了複雜的XPath:

concat(substring-before(string(//*:SettlementRequest/*:MeterReadingId/text()+ 1), '.'), substring-before(substring-after(string(//*:SettlementRequest/*:MeterReadingId/text()+ 1), '.'), 'E')) 

這段代碼的工作,直到你需要增加哪些結束......一樣的Id 69所以最終值應爲1842870.此代碼做出如下:

MeterReadingId [184287] 

它只是省略了最後的0 ...所以我不能得到正確的值。 可能有人提供瞭如何加1,當前meterReadingId任何想法,這樣我就能收到1842870.

感謝

回答

0

似乎SOAPUI返回此格式的數字,即使你使用XPath功能ceiling後者評估小數數字並返回最小的整數。

所以我建議採用以下方法;

假設你的第一個一步步測試,被命名爲SOAP Request 1,併爲您展示的請求包含:

<nuts1:SettlementRequest> 
      <!--Optional:--> 
      <nuts1:MeterReadingId>1842869</nuts1:MeterReadingId> 
... 

而在第二個一步步測試,要使用以前<MeterReadingId>加1使用如下符號:

</nuts:Header> 
     <!--Optional:--> 
     <nuts1:MeterReadingId>${=${SOAP Request#response#//*:SettlementRequest/*:MeterReadingId/text()} + 1}</nuts1:MeterReadingId> 
... 

解釋爲${=${SOAP Request 1#response#//*:SettlementRequest/*:MeterReadingId/text()} + 1}

前面的表達式第一SOAPUI的EVA luates ${SOAP Request 1#response#//*:SettlementRequest/*:MeterReadingId/text()}它以testStep請求的名稱(在這種情況下爲SOAP Request,獲取response屬性並應用XPath,因此它的計算結果爲1842869,所以現在在此過程之後它具有${=1842869+1}

然後SOAPUI評估內部${=}作爲常規腳本表達,所以它返回1842869+1之和適用的toString()的結果給你所期望的輸出是1842870

希望它有幫助,

+0

謝謝!它的作品完美:) –

+0

@AlyonaKovalyova很高興幫助你':)' – albciff