0

私の質問は、SoapUI の応答に (groovy スクリプトからの) データ要素を入れることについてです。応答に入れたいデータの配列があります (異なるタグ/要素で)


次のような単純な要素を配置することを認識しています。

Xml 応答の要素「MyName 」:

<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]]]

応答では、全体の値を確認できますが、要素「 Procent${DataSummary}を取得するにはどうすればよいですか

コンテキスト データの作成方法が間違っている可能性がありますが、自由に調整してください。

4

2 に答える 2

1

いろいろ検索してなんとかできました。まず、${=DataSummary[0]} のようなハンドルを取得できるように、要素の前に "=" を使用する必要がありました。これは、前に示したデータの最上位レベルで機能します。

しかし、問題を本当に解決するために、Groovy で次のようなクラスを作成しました。

コード: すべてのクラスを選択します。 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 = new DataSummaryResponseDetail() hsrd.name = 'ある名前' hsrd.value[0]=new Value() hsrd.value[0].Amount = 1000 hsrd.value[0].Currency = 'SEK' hsrd. totalValue.Amount = 2000 hsrd.totalValue.Currency = '米ドル'

問題が解決しました。良い方法をご存知でしたら教えてください。

于 2010-06-11T13:13:33.957 に答える
0

私は SoapUI を使用していませんが、これを試しましたか:

${DataSummary.DataSummaryResponseDetail.DataProgress.Procent}

DataSummary が配列の場合、次を使用して最初のエントリにアクセスできます

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

メソッド each() を使用して配列を反復処理できるため、

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

すべてのエントリを取得します。

于 2010-06-10T14:05:16.723 に答える