SOAPUIで応答するのGroovyスクリプトから複雑なデータ型を追加する方法
質問
私の質問はSOAPUIで応答してデータ要素(Groovyのスクリプトから)を置くことについてです。 私は(異なるタグ/要素で)私の応答に入れたいとのデータの配列をしました。
<時間>私はこのような単純な要素を置くのを意識しています:
要素 "のMYNAMEの" XML応答でます:
<ns:MyName>${MyName}</ns:MyName>
でのGroovyスクリプトからマップされている。
context.setProperty("MyName" , "My name" )
<時間>
今問題:
このような私の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}
の全体の値を参照することができるよしかし、どのように私は要素を得るのですか「のProcentの」
私は多分私のコンテキストデータを構築する方法について間違っていますが、調整して自由に感じる!
解決
私は、検索の多くでこれを行うことができました。 まず第一に、私は次のようにハンドルを取得できるようにする要素の前に「=」を使用するために必要な $ {= DataSummary [0]} 私のデータの最上位レベルでのこの作品の前に示されます。
しかし、本当に私はこのようにGroovyでクラスを作成した問題を解決するために:
コードは:すべてを選択します クラスDataSummaryResponseDetail { 公共の文字列名 公共DataProgress DataProgress =新しいDataProgress() 公開値[]値=新しい値[2] } クラスDataProgress { から公開日 公共の日へ 公共フロートProcent } クラス値{ 公共の文字列の通貨 公共int型の額 }
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] = 1000 .Amount hsrd.value [0] .Currency = 'SEK' = 2000 hsrd.totalValue.Amount hsrd.totalValue.Currency = 'USD'
問題が解決しました。あなたがより良い方法を知っている場合は、私に知らせてくださいます。
他のヒント
私はSOAPUIと仕事を持っていないが、あなたはこれを試してみました。
${DataSummary.DataSummaryResponseDetail.DataProgress.Procent}
DataSummaryが配列の場合は、使用して最初のエントリにアクセスすることができました。
${DataSummary[0].DataSummaryResponseDetail.DataProgress.Procent}
は、()メソッドをそれぞれ使用してアレイを反復できるように
${DataSummary.each { it.DataSummaryResponseDetail.DataProgress.Procent }}
あなたのすべてのエントリを得るでしょう。