Xml 如何在Groovy for SoapUI中使用分隔符将所有SOAP响应值写入CSV文件
我是Groovy新手,正在从事SOAPUI工作。目前我正在Groovy模块上工作,我需要将带有分隔符的所有标记值写入Xml 如何在Groovy for SoapUI中使用分隔符将所有SOAP响应值写入CSV文件,xml,csv,groovy,soapui,Xml,Csv,Groovy,Soapui,我是Groovy新手,正在从事SOAPUI工作。目前我正在Groovy模块上工作,我需要将带有分隔符的所有标记值写入.csv文件。我从另一篇文章中得到的解决方案是针对xpath的 但我正在努力实现以下目标: 要存储在csv文件中的所有重复数组的所有值 单行中的每个数组都带有分隔符 预期输出: code;Name;Category;Manufacturer;Price;Stock // as header 1234;product name;some category;manufacturer;1
.csv
文件。我从另一篇文章中得到的解决方案是针对xpath
的
但我正在努力实现以下目标:
code;Name;Category;Manufacturer;Price;Stock // as header
1234;product name;some category;manufacturer;100;1
1235;product name2;some category2;manufacturer2;1002;2
XML示例:
<ns2:personalarray1Response>
<ns2:personarray1>
<Code>1234</Code>
<Name>product name</Name>
<Category>some category</Category>
<Manufacturer>manufacturer</Manufacturer>
<Price>100</Price>
<Stock>1</Stock>
</ns2:personarray1>
<ns2:personarray1>
<Code>1235</Code>
<Name>product name2</Name>
<Category>some category2</Category>
<Manufacturer>manufacturer2</Manufacturer>
<Price>1002</Price>
<Stock>2</Stock>
</ns2:personarray1>
<ns2:personarray1>
<Code>1234</Code>
<Name>product name</Name>
<Category>some category</Category>
<Manufacturer>manufacturer</Manufacturer>
<Price>100</Price>
<Stock>1</Stock>
</ns2:personalarray1>
</ns2:personalarray1Response>
下面是同一Soap请求步骤的
脚本断言
,需要不需要来使用额外的Groovy脚本步骤
脚本
//Change file name as needed
def fileName = '/file/path/to.csv'
def delimiter = ','
assert context.response, 'Response is empty or null'
def xml = new XmlSlurper().parseText(context.response)
def personalInfos = xml.'**'.findAll { it.name() == 'personarray1' }
//Create the list of data (person array)
def list = personalInfos.collect {info -> info.children()*.name().collectEntries{[(it): info."$it"] } }
def sb = new StringBuffer(list[0].keySet().join(delimiter))
sb.append('\n')
list.collect { sb.append(it.values().join(delimiter)).append('\n')}
log.info "Data going to be written into file: \n ${sb.toString()}"
new File(fileName).write(sb.toString())
谢谢Rao的代码。但是当我在项目路径的运行时创建一个.csv文件时,我希望它出现在groovy模块中。我尝试了上面的代码,在获取错误为“wed Nov22 18:30.07 GMT+05:30 2017:error:a erroro Occursed[找不到匹配的构造函数:java:io:file(java.io.file)],请参阅错误日志了解详细信息”的SOAP Ui日志中,获取并显示了值。但同样的情况是无法写入文件。此外,已创建我的响应文件。@SD31,您可能尝试了错误的内容,或者没有按照解决方案中提供的内容进行尝试。@SD31,如果查看您在注释中发布的错误,您是在向文件传递文件对象。如果您已经有file对象,那么只需
file.write(sb.toString())
。错误:发生错误[找不到匹配的构造函数:java:io:file(java.io.file)]groovy.lang.GroovyRuntimeException:在groovy.lang.MetaclassImpl.invokeConstructor中找不到匹配的构造函数:java:io:file(java.io.file)位于org.codehaus.groovy.runtime.callsite.MetaclassConstructorSite.callConstructor(MetaclassConstructorSite.java:46)org.codehaus.groovy.runtime.callsite.callsite.MetaclassConstructorSite.callConstructor(MetaclassConstructorSite.java:46)的groovy.lang.MetaclassImpl.invokeConstructor(MetaclassImpl.java.1404)上