Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy 将人工生成的XML插入SOAPUI请求_Groovy_Soapui_Cdata - Fatal编程技术网

Groovy 将人工生成的XML插入SOAPUI请求

Groovy 将人工生成的XML插入SOAPUI请求,groovy,soapui,cdata,Groovy,Soapui,Cdata,我尝试在SOAPUI中执行以下操作: 读取响应并从中提取节点 将节点插入到另一个请求中 在Groovy脚本中生成一些xml并存储在TestCase属性中 将属性中生成的xml作为子节点插入步骤2中插入的节点 对于1和2:响应的结构类似于 <A><B>bb</B><C>cc</C><D>dd</D></A> 插入节点不起作用,因为无法将属性放置在E节点应该位于的位置(据我所知) 我尝试通过另一个属性转

我尝试在SOAPUI中执行以下操作:

  • 读取响应并从中提取节点
  • 将节点插入到另一个请求中
  • 在Groovy脚本中生成一些xml并存储在TestCase属性中
  • 将属性中生成的xml作为子节点插入步骤2中插入的节点
  • 对于1和2:响应的结构类似于

    <A><B>bb</B><C>cc</C><D>dd</D></A>
    
    插入节点不起作用,因为无法将属性放置在E节点应该位于的位置(据我所知)

    我尝试通过另一个属性转移测试步骤插入E节点-属性的值作为子节点插入到A节点的请求中(与步骤2中将A节点从响应复制到下一个请求的方式相同)。结果是:

    <A><![CDATA[<E>ee</E>]]<<B>bb</B><C>cc</C><D>dd</D></A>
    

    ee]]对于1和2,您可以只使用一个简单的

    假设您的回答如下所示:

    <AAA>
        <BBB/>
        <CCC/>
        <BBB/>
        <BBB/>
        <DDD>
            <BBB/>
        </DDD>
        <CCC/>
    </AAA>
    
    如果您想变得更花哨,可以使用其中的一种,其中一些是用SoapUI打包的。这是一种可能性


    对于4,您将再次使用属性扩展:
    ${#TestCase#my#u property}

    您的问题相当广泛,因此我下面的答案同样广泛。如果你想缩小范围,请通读并编辑你的问题。谢谢,这真的很有帮助:)${{#Response//*:DDD}我们也可以在不需要时使用${#Response/*:DDD/*}node@SiKing此解决方案的问题是:-它将不需要的名称空间附加到节点。例如,Name www.udzial.com>而我在输出中得到的是Name www.udzial.com,所以我不想添加名称空间(前缀),也就是说,您可以看到添加了'mr'。@Gauravkhurana如果您需要操作名称空间,您需要求助于一些Java库。。。在第#3点之后的注释中提到。
    ${#TestCase#new_xml}
    
    <A><![CDATA[<E>ee</E>]]<<B>bb</B><C>cc</C><D>dd</D></A>
    
    <AAA>
        <BBB/>
        <CCC/>
        <BBB/>
        <BBB/>
        <DDD>
            <BBB/>
        </DDD>
        <CCC/>
    </AAA>
    
    // Generate some xml in a Groovy script
    def xml = '<AAA><BBB/><CCC/><BBB/><BBB/><DDD><BBB/></DDD><CCC/></AAA>'
    // store in a TestCase property
    testRunner.testCase.setPropertyValue('my_property', xml)