0

我有来自 SoapUI 中的 TestStep 的 SOAP 响应。我想解析响应中特定元素的每个值,并将其作为参数发送到对另一个 Web 服务的单独请求调用。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
    <searchResponse xmlns="urn:messages_2012_2.platform.webservices.technoplat.com">
        <platformCore:searchResult xmlns:platformCore="urn:core_2012_2.platform.webservices.technoplat.com">
            <platformCore:searchRowList>
                <platformCore:searchRow xsi:type="tranSales:TransactionSearchRow" xmlns:tranSales="urn:sales_2012_2.transactions.webservices.technoplat.com">
                    <tranSales:basic xmlns:platformCommon="urn:common_2012_2.platform.webservices.technoplat.com">
                        <platformCommon:tranId>
                            <platformCore:searchValue>17678</platformCore:searchValue>
                        </platformCommon:tranId>
                    </tranSales:basic>
                </platformCore:searchRow>
                <platformCore:searchRow xsi:type="tranSales:TransactionSearchRow" xmlns:tranSales="urn:sales_2012_2.transactions.webservices.technoplat.com">
                    <tranSales:basic xmlns:platformCommon="urn:common_2012_2.platform.webservices.technoplat.com">                    
                        <platformCommon:tranId>
                            <platformCore:searchValue>17705</platformCore:searchValue>
                        </platformCommon:tranId>                   
                    </tranSales:basic>
                </platformCore:searchRow>
                <platformCore:searchRow xsi:type="tranSales:TransactionSearchRow" xmlns:tranSales="urn:sales_2012_2.transactions.webservices.technoplat.com">
                    <tranSales:basic xmlns:platformCommon="urn:common_2012_2.platform.webservices.technoplat.com">
                        <platformCommon:tranId>
                            <platformCore:searchValue>17777</platformCore:searchValue>
                        </platformCommon:tranId>
                    </tranSales:basic>
                </platformCore:searchRow>          
            </platformCore:searchRowList>
        </platformCore:searchResult>
    </searchResponse>
</soapenv:Body>

在上面的 SOAP 响应中,我想分别捕获值:17678、17705 和 17777,并将它们作为参数发送到另一个 SOAP Request TestStep。大多数人建议使用 groovy 脚本进行递归。

我的问题是: 1. 从上面的 SOAP 响应中提取值并在 SoapUI 中迭代并创建单独的 SOAPRequest TestStep 的最佳方法是什么?2.假设每个值都是在 Groovy TestStep 中提取的,我如何将这些值提供给外部的“results.txt”类型的 csv(名称值对)文件。

任何建议,将不胜感激。

4

2 回答 2

0

如果您使用的是soapUI Pro,最简单的方法是使用带有XML DataSource 的DataSource TestStep(参见http://blog.smartbear.com/software-quality/bid/170520/How-to-Use-XML- DataSources-for-Response-Processing-in-soapUI为例)。如果您使用的是免费版本,那么脚本是您的最佳选择!

祝你好运!

/奥莱

于 2013-01-20T08:23:55.870 回答
0

这是我以前使用的方式可能不是最好的。

  1. 通过 XmlSluper 解析 XML。
    处理 XML 的方法有很多种(参见: http: //groovy.codehaus.org/Processing+XML

  2. 使用 XmlParser 和 CSVWriter (opencsv) 将 XML 转换为 CSV 我从这里看到了很好的例子:http ://blog.ktronline.com/2011/12/creating-csv-file-from-xml-using-groovy.html

于 2013-01-20T02:54:21.533 回答