我正在研究 SoapUI,我有一个 Soap 请求,它接受 Json String 格式的输入,处理后我得到一个 XML 格式的 Soap 响应,JSON 格式包含在 CDATA 中。
我正在尝试使用以下代码从 Soap Response 中提取数据,但出现错误“prolog 中不允许内容”
import com.eviware.soapui.support.XmlHolder
import net.sf.json.groovy.JsonSlurper
import groovy.xml.Namespace
respXmlHolder = new XmlHolder(messageExchange.getResponseContentAsXml())
respXmlHolder.declareNamespace("ns1","http://tempuri.org/")
CDATAXml = respXmlHolder.getNodeValue("//ns1:ReportResult")
log.info(CDATAXml)
def data = new XmlParser().parseText(CDATAXml).Rpt
log info "data.findAll{it.'Name'}.size()"
Soap 响应如下所示:
<ReportResponse xmlns="http://tempuri.org/">
<ReportResult><![CDATA[{
"Report": [
{
"Name": "ABC",
"Number": "123",
"Type": "XYZ",
"Desc": "EFGH",
"Group Name": "Name123",
"Group Number": "123",
"End Date": "12/30/2014",
"Due Date": "04/15/2015",
"Completion Date": null,
"Status": "Status1",
"Received Date": "",
"Delivery Date": "",
"Location": "",
"Role": "",
},
{
"Name": "EFG",
"Number": "123",
"Type": "XYZ",
"Desc": "EFGH",
"Group Name": "Name123",
"Group Number": "123",
"End Date": "12/30/2014",
"Due Date": "04/15/2015",
"Completion Date": null,
"Status": "Status1",
"Received Date": "",
"Delivery Date": "",
"Location": "",
"Role": "Manager",
}
]
} ]]></ReportResult>
</ReportResponse>
</s:Body>
</s:Envelope>
请在这方面帮助我。