我首先使用http.get:
保存txt文件 http.get(path: path,
contentType: TEXT,
query: [id:dapId, instance:alias, format:'xml', file:portalFile]) {resp, reader ->
println "response status: ${resp.statusLine}"
println 'Headers: -----------'
resp.headers.each { h ->
println " ${h.name} : ${h.value}"
}
new File(outputFileName).withWriter{out -> out << reader}
}
然后在XmlSlurper()。parse中的outputFileName中使用新创建的文件,如下所示:
def inputFile = new File(outputFileName)
def domain = new XmlSlurper().parse(inputFile)
但是在执行新的XmlSlurper()时遇到错误.parse(inputFile):
Caught: org.xml.sax.SAXParseException: White spaces are required between publicId and systemId.
我注意到使用http.get创建的文本文件outputFileName似乎是HTML文件而不是XML文件。所以我将它应该包含的XML代码复制并粘贴到outputFileName中,跳过了代码的第一部分,只运行了XmlSlurper()。parse()位,并且它有效。
outputFileName应该是一个xml文件吗?它有很多HTML标签。
提前致谢! :d
答案 0 :(得分:1)
HTML!= XML。您的HTML文件可能不是有效的XML。因此,XML解析器在解析期间失败。您确定从http GET创建的文件是否是有效的XML文件?