【发布时间】:2016-04-27 07:11:31
【问题描述】:
我正在处理 SoapUI,我有一个 Soap 请求,它接受 Json 字符串格式的输入,处理后我得到一个 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>
请在这方面帮助我。
【问题讨论】:
-
您正在尝试使用 xpath 获取
Result,但它在 xml 中的什么位置?可以看this类似的例子来提取json。 -
你提到的例子有未包含在CDATA中的数据尝试提取但不起作用。
标签: soapui cdata web-api-testing