【问题标题】:XmlSlurper and http.get in groovygroovy 中的 XmlSlurper 和 http.get
【发布时间】:2011-08-30 17:12:43
【问题描述】:

我先用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) 

但是在执行 new 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

【问题讨论】:

    标签: groovy xmlslurper


    【解决方案1】:

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

    【讨论】:

    • 除了http.get之外还有其他方法可以将xml文件保存在新创建的临时文件中吗?因为我有几个 xml 文件需要保存在临时文件中,但我不知道如何在 groovy 中执行此操作..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    相关资源
    最近更新 更多