XmlSlurper и http.get в groovy

Сначала я сохраняю текстовый файл с помощью http.get:

         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}
        }

Затем используйте только что созданный файл в outputFileName в XmlSlurper().parse, как показано ниже:

    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.

Я заметил, что текстовый файл outputFileName, который создается с помощью http.get, кажется файлом HTML, а не файлом XML. Поэтому я скопировал и вставил XML-код, который он должен содержать, в outputFileName, пропустил первую часть кода и запустил только бит XmlSlurper().parse(), и это сработало.

Должно ли outputFileName быть файлом xml? Он имеет множество тегов HTML.

Заранее спасибо! :D


person SL1    schedule 30.08.2011    source источник


Ответы (1)


HTML != XML. Ваш файл HTML, вероятно, не является допустимым XML. Поэтому синтаксический анализатор XML дает сбой во время синтаксического анализа. Вы уверены, что файл, созданный с помощью http GET, является допустимым XML-файлом?

person Robert Greathouse    schedule 30.08.2011
comment
Есть ли способ, кроме http.get, сохранить файл xml во вновь созданном временном файле? Потому что у меня есть несколько XML-файлов, которые мне нужно сохранить во временных файлах, но я не знаю, как это сделать в groovy. - person SL1; 31.08.2011