XmlSlurper和groovy中的http.get

时间:2011-08-30 17:12:43

标签: groovy xmlslurper

我首先使用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

1 个答案:

答案 0 :(得分:1)

HTML!= XML。您的HTML文件可能不是有效的XML。因此,XML解析器在解析期间失败。您确定从http GET创建的文件是否是有效的XML文件?