2010-06-10 17 views
0

我的問題是關於將數據元素(來自groovy腳本)放在SoapUI中的響應中。 我有一組數據,我想提出我的響應(在不同的標籤/元素)如何將複雜的數據類型從Groovy腳本添加到SoapUI中的響應中


我知道把一個簡單的元素像這樣的:

元素「

<ns:MyName>${MyName}</ns:MyName> 

從Groovy腳本由

context.setProperty("MyName" , "My name") 
映射: 在XML響應MYNAME

現在的問題:

我的XML響應如下所示:

<soapenv:Body> 
    <ns:GetDataSummaryResponse> 
    <!--Optional:--> 
    <ns:GetDataSummaryResult> 
     <ns:DataSummary> 
      <!--Zero or more repetitions:--> 
      <ns:DataSummaryResponseDetail> 
       <ns:Name>?</ns:Name> 
       <!--Optional:--> 
       <ns:DataProgress> 
       <!--Optional:--> 
       <From>?</From> 
       <!--Optional:--> 
       <Procent>?</Procent> 
       <!--Optional:--> 
       <To>?</To> 
       <!--Optional:--> 

在Groovy我已經建立了其充滿數據例如這樣的數據數組:

context:[DataSummary:[DataSummaryResponseDetail:[Name:My name, DataProgress:[From:some text, **Procent:some value**, To:some text]]] 

在響應中我可以看到${DataSummary}的整個值,但是如何獲取元素「Pro分

我可能錯了如何建立我的上下文數據,但隨時調整!

回答

1

我設法做了很多搜索。 首先,我需要在元素前面使用「=」才能獲得像 $ {= DataSummary [0]} 這樣的句柄。這適用於我之前顯示的數據的頂層。

但要真正解決我在Groovy中創建的類像這樣的問題:

代碼:選擇所有 類DataSummaryResponseDetail { 公共字符串名稱 公共DataProgress DataProgress =新DataProgress() 公共值[]值=新值[2] } 類DataProgress { 公共日期從 公共日期要 公共浮Procent } 類價值{ 公共字符串貨幣 公衆詮釋金額 }

def hsrd = new DataSummaryResponseDetail() 
hsrd.name = 'Some name' 
hsrd.value[0]=new Value() 
hsrd.value[0].Amount = 1000 
hsrd.value[0].Currency = 'SEK' 
hsrd.totalValue.Amount = 2000 
hsrd.totalValue.Currency = 'USD' 

,然後在響應XML。我指的是這樣 $元件{hsrd.value [0] .Amount} $ {= hsrd.totalValue.Amount}

DEF hsrd =新DataSummaryResponseDetail() hsrd.name = '某些名稱' hsrd .value [0] =新值() hsrd.value [0] .Amount = 1000 hsrd.value [0] .Currency ='SEK' hsrd.totalValue.Amount = 2000 hsrd.totalValue.Currency =' USD'

問題已解決。如果您知道更好的方法,請告訴我。

0

我還沒有了SoapUI工作,但你嘗試過這樣的:

${DataSummary.DataSummaryResponseDetail.DataProgress.Procent} 

如果DataSummary是一個數組,你可以訪問使用

${DataSummary[0].DataSummaryResponseDetail.DataProgress.Procent} 

您可以遍歷的第一項數組使用方法each(),所以

${DataSummary.each { it.DataSummaryResponseDetail.DataProgress.Procent }} 

會讓你所有的條目。

+0

不! 由於DataSummary和其他許多東西一樣都是「數組」,我需要一種方法來聲明我感興趣的索引。 – SeeU 2010-06-10 14:29:54

+0

感謝您的回覆。我的名字,DataProgress:[From:some text,Procent:some value,To:我的名字,DataProgress:[DataSummary:[DataSummaryResponseDetail:[DataSummaryResponseDetail:[Name:一些文字]]]「也作爲字符串。 我已經嘗試過更簡單的變體,但我沒有回過頭。 $ {DataSummary [0] .DataSummaryResponseDetail [0] .Name} $ {DataSummaryResponseDetail [0] .Name} 如果我使用「$ {DataSummary}」,則返回整個字符串。它是否有任何與XPATH有關的事情來實現我需要的數據? 我需要以另一種方式構建我的Context(DataSummary)嗎? – SeeU 2010-06-11 07:06:16

相關問題