0

まず、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 が、XML ファイルではなく HTML ファイルのように見えることに気付きました。そのため、そこに含まれているはずの XML コードをコピーして outputFileName に貼り付け、コードの最初の部分をスキップして、XmlSlurper().parse() ビットのみを実行したところ、機能しました。

outputFileName は xml ファイルであるはずですか? HTMLタグがたくさんあります。

前もって感謝します!:D

4

1 に答える 1

1

HTML != XML. HTML ファイルはおそらく有効な XML ではありません。したがって、XML パーサーは解析中に失敗します。http GET から作成されたファイルが有効な XML ファイルであると確信していますか?

于 2011-08-30T20:48:15.237 に答える