【问题标题】:soap Ui response dynamically肥皂 UI 动态响应
【发布时间】:2020-12-10 13:19:39
【问题描述】:

我需要找到动态生成 Soap UI 模拟响应的方法。 我有这个请求的例子(我们必须将字段 elem 重点放在 listelem 中):

请求

 <soapenv:Level1>
      <v1:listelem>
         <v2:elem>
            <v11:data1>?</v11:data1>
            <v11:data2>?</v11:data2>
         </v2:elem>
         <v2:elem>
            <v11:data1>?</v11:data1>
            <v11:data2>?</v11:data2>
         </v2:elem>
         <v2:elem>
            <v11:data1>?</v11:data1>
            <v11:data2>?</v11:data2>
         </v2:elem>
      </v1:listelem>
   </soapenv:Level1>

在我的 request 中,我可以找到 从 0 到 n 个元素,我必须将这些数据转换为 response 字段,如下所示: 回复

 <soapenv:Level1>
          <v1:OtherData>
          </v1:OtherData>
          <v1:EvenOtherData>
          </v1:EvenOtherData>
          <v1:listelem>
             <v2:elem>
                <v11:data1>?</v11:data1>
                <v11:data2>?</v11:data2>
                <v11:respose>?</v11:respose>
             </v2:elem>
             <v2:elem>
                <v11:data1>?</v11:data1>
                <v11:data2>?</v11:data2>
                <v11:respose>?</v11:respose>
             </v2:elem>
             <v2:elem>
                <v11:data1>?</v11:data1>
                <v11:data2>?</v11:data2>
                <v11:respose>?</v11:respose>
             </v2:elem>
          </v1:listelem>
       </soapenv:Level1>

如何在响应中创建 N 个节点(名为 element)?我必须在其他节点之后添加另一个节点。我试过用脚本来做,但没有成功。

【问题讨论】:

  • 为什么你帖子的最后一部分是意大利语? :P
  • 你说得对,翻译过来是:如何在答案中创建N个节点(命名为**元素**)?我必须添加其他节点的底部,另一个节点。我试图通过脚本来做,但我没有成功。
  • 我会为您编辑您的问题。下次您可以使用 edit 自己做,而不是使用 cmets。

标签: java soap groovy mocking soapui


【解决方案1】:

我在您的示例中添加了 namsespace 声明。

<soapenv:Level1 xmlns:soapenv="1"  xmlns:v1="v1" xmlns:v2="v2" xmlns:v11="v11">

在 SOAP 模拟响应中试试这个脚本

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holderRequest = groovyUtils.getXmlHolder( mockRequest.requestContent )
def holderResponse = groovyUtils.getXmlHolder( mockResponse.responseContent )

listelemRequest =  holderRequest.getDomNode("//v1:listelem")
Level1Response =  holderResponse.getDomNode("//soapenv:Level1")
listelemResponse =  holderResponse.getDomNode("//v1:listelem")

//Coppy listelem from request to response
listelem = listelemResponse.getOwnerDocument().importNode(listelemRequest, true)
Level1Response.replaceChild(listelem,listelemResponse) 

//List nodes of elements
nodes =  holderResponse.getDomNodes("//v2:elem")

for(node in nodes){ 
    def nodeHolder  = groovyUtils.getXmlHolder("""<v11:response xmlns:v11="v11">?</v11:response>""")
    def itemNode = nodeHolder.getDomNode("//v11:response" )
    def responseElem = node.getOwnerDocument().importNode(itemNode,true)
    node.appendChild(responseElem)
}

mockResponse.setResponseContent(holderResponse.getXml())

脚本将 listelem 从请求复制到响应并添加项目“响应”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多