使用groovy将Soap UI格式XML响应为csv

使用groovy将Soap UI格式XML响应为csv,xml,groovy,xml-parsing,soapui,Xml,Groovy,Xml Parsing,Soapui,我对soapui和Groovy还很陌生,我已经尝试了好几天来解决它,但我无法实现它。有人知道如何正确格式化吗 我需要将“Preis”节点正确地附加到此格式,并去掉“VOKey”节点 我需要以下输出格式的响应: 现在我明白了: 我的XML响应: -1 英国石油公司 贝祖姆 越南 贝雷希提贡 福克 动力 不 手提包 150000 维米特勒 0 沃名称 碎肉饼 这是我的groovy脚本断言: //根据需要更改文件名 def文件名='N:/test.csv' def分隔符=';' 断言conte

我对soapui和Groovy还很陌生,我已经尝试了好几天来解决它,但我无法实现它。有人知道如何正确格式化吗

我需要将“Preis”节点正确地附加到此格式,并去掉“VOKey”节点

我需要以下输出格式的响应:

现在我明白了:

我的XML响应:


-1
英国石油公司
贝祖姆
越南
贝雷希提贡
福克
动力
不
手提包
150000
维米特勒
0
沃名称
碎肉饼
这是我的groovy脚本断言:

//根据需要更改文件名
def文件名='N:/test.csv'
def分隔符=';'
断言context.response,“响应为空或null”
def xml=new XmlSlurper().parseText(context.response)
def xmlp=new XmlSlurper().parseText(context.response)
def personalInfos=xml.'**'.findAll{it.name()
def preis=xmlp.'**'.findAll{it.name()=='preis'}
//从属性获取所有子对象
def list=personalInfos.collect{info->info.children()
def sb=new StringBuffer(列表[0].keySet().join(分隔符))
sb.追加('\n')
list.collect{sb.append(it.values().join(分隔符)).append('\n')}
log.info“数据将写入文件:\n${sb.toString()}”
新文件(文件名).append(sb.toString())
新文件(文件名).append(preis.toString())
新文件(文件名)。带有{
附加(sb.toString())
追加(preis.toString())
}
提前谢谢

assert context.response,“响应为空或null”
def xml=new XmlSlurper().parseText(context.response)
def personalInfos=xml.'**'.findAll{it.name()
def listofmap=personalInfos.collect{info->
info.children().collectEntries{[it.name(),it.text()]}
}
def headers=listofmap.collectMany{it.keySet()}.unique().findAll{it!='VOKey'}
def csv=listofmap.collect{li->headers.collect{h->li[h]?:''}.join(';')}.join('\n'))
新文件(文件名).append(csv)