XmlSlurper и http.get в Groovy - PullRequest
       14

XmlSlurper и http.get в Groovy

0 голосов
/ 30 августа 2011

Сначала я сохраняю текстовый файл, используя 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) 

Но я получаю сообщение об ошибке при выполнении нового 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

1 Ответ

1 голос
/ 31 августа 2011

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

...