用grails解析XML的问题

问题描述

| 我正在开发一个应用程序,该应用程序从Last.fm API中提取有关音乐事件的信息。 但是,由于某种原因,应用程序仅解析XML文件中的前两个事件,我无法弄清原因。有什么帮助吗? 这是代码:
def resultList = []

    if(connection.responseCode == 200){
        def xml = connection.content.text
        def lfm = new XmlSlurper().parseText(xml)
        lfm.events.event.each {
            def result = [:]
            result.eventId = it.id as String
            result.eventTitle = lfm.events.event.find { it.\'id\' == result.eventId }.title as String

            resultList << result

        }
    

解决方法

        我只是发现该错误位于Controller类的save {}闭包中。以下是带有该错误的代码:
def save = {
    resultsList.each{
        def eventInstance = new Event(params + it)
        if (eventInstance.save(flush: true)) {
            flash.message = \"${message(code: \'default.created.message\',args: [message(code: \'event.label\',default: \'Event\'),eventInstance.id])}\"
            redirect(action: \"show\",id: eventInstanceID)
        }
        else {
            render(view: \"create\",model: [eventInstance: eventInstance])
        }
    }
}
因此,问题在于我正在重定向每个{}闭包内的操作“显示”。由于某种原因,我仍然不确定,它在each {}循环的第二次迭代后引发了异常。因此,我要做的就是在each {}闭包之外调用redirect方法,如下所示:
   def save = {
    def resultsList = eventService.lastFmVenues(params.artist)
    def eventInstanceID
    resultsList.each{
        def eventInstance = new Event(params + it)
        if (eventInstance.save(flush: true)) {
            flash.message = \"${message(code: \'default.created.message\',eventInstance.id])}\"
            eventInstanceID = eventInstance.id
        }
        else {
            render(view: \"create\",model: [eventInstance: eventInstance])
        }
    }
    redirect(action: \"show\",id: eventInstanceID)
}
我仍然很好奇为什么仅在第二次迭代后才引发异常,但是无论如何,问题都得到了解决。谢谢!     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...