1

sopaUI でのGroovy スクリプトの使用 - XML ホルダーの内容を別のものにコピーする (SOAP 要求のテスト ステップのクローンを作成しようとしている)

以前の質問で、CDATA に関する私の懸念に言及するのを忘れていたことに気付きました ...これは、私の実際の懸念が何であるかを他の人に誤解させる可能性があると思います。私の悪い!

私がしたことを繰り返します。

SoapRequest (オリジナル)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
   <soapenv:Header/>
   <soapenv:Body>
      <idm:request>
         <idm:dataset-searches>
            <idm:profile-name></idm:profile-name>
         </idm:dataset-searches>
         <idm:individual-name>
            <idm:family-name>ABC</idm:family-name>
            <idm:first-given-name>DEF</idm:first-given-name>
         </idm:individual-name>
         <idm:date-of-birth>1985-12-12</idm:date-of-birth>
      </idm:request>
   </soapenv:Body>
</soapenv:Envelope>

私のGroovyスクリプトは以下の通りです

def grUtils = new com.eviware.soapui.support.GroovyUtils(context)
def ReqHolder2 = grUtils.getXmlHolder("Modified#Request")

ReqHolder2.removeDomNodes("//idm:request")
ReqHolder2.updateProperty()

ReqHolder2 ["//soapenv:Body"] = context.expand( '${Original#Request#//idm:request}' )
ReqHolder2.updateProperty()

上記の groovy スクリプトを実行すると、変更されたリクエストは元のリクエストのコンテンツで更新されますが、更新されたコンテンツは CDATA 内にあり、スキーマへの参照です。

SoapRequest (変更)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
   <soapenv:Header/>
   <soapenv:Body>***<![CDATA[<idm:request xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">***
         <idm:dataset-searches>
            <idm:profile-name/>
         </idm:dataset-searches>
         <idm:individual-name>
            <idm:family-name>ABC</idm:family-name>
            <idm:first-given-name>DEF</idm:first-given-name>
         </idm:individual-name>
         <idm:date-of-birth>1985-12-12</idm:date-of-birth>
      </idm:request>**]]>**</soapenv:Body>
</soapenv:Envelope>

CDATA 内の XML を更新しないようにする方法を教えてください。むしろ、XML を適切に更新してください。親切にアドバイス。

4

1 に答える 1

1

Modified Request を次のように変更します。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"   xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
   <soapenv:Header/>
   <soapenv:Body>${test123}</soapenv:Body>
</soapenv:Envelope>

groovy を次のように変更します。

def grUtils = new com.eviware.soapui.support.GroovyUtils(context)
def ReqHolder2 = grUtils.getXmlHolder(context.expand( '${Original#Request#//idm:request}' ))
context.setProperty("test123", ReqHolder2.getXml())

testRunner.runTestStepByName( "Modified")

log.info(grUtils.getXmlHolder(context.expand( '${Modified#Request}')).getPrettyXml())

ログをコピーしてテキスト エディタに貼り付けると、次のように表示されます。

Wed Jul 25 13:11:20 MDT 2012:INFO:<soapenv:Envelope     xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:idm="http://vedaxml.com/vxml2/idmatrix-v2-0.xsd">
   <soapenv:Header/>
   <soapenv:Body>
      <idm:request>
         <idm:dataset-searches>
            <idm:profile-name/>
         </idm:dataset-searches>
         <idm:individual-name>
            <idm:family-name>ABC</idm:family-name>
            <idm:first-given-name>DEF</idm:first-given-name>
         </idm:individual-name>
         <idm:date-of-birth>1985-12-12</idm:date-of-birth>
      </idm:request>
   </soapenv:Body>
</soapenv:Envelope>
于 2012-07-25T19:15:42.077 に答える