SOAPUIで応答するのGroovyスクリプトから複雑なデータ型を追加する方法

StackOverflow https://stackoverflow.com/questions/3014106

質問

私の質問は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 }}

あなたのすべてのエントリを得るでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top