【问题标题】:XmlSlurper parsing a query resultXmlSlurper 解析查询结果
【发布时间】:2013-05-13 19:15:36
【问题描述】:

我有一个查询,它在我的表格中带回一个包含所有 xml 的单元格。我有它,所以我可以在没有任何分隔符的情况下吐出单元格中的内容。现在我需要实际获取每个单独的元素并将它们与我的对象链接起来。有什么简单的方法可以做到这一点?

    def sql
    def dataSource
    static transactional = true


  def pullLogs(String username, String id) { 
    if(username != null && id != null) {

    sql = new Sql(dataSource)
    println "Data source is: " + dataSource.toString()
    def schema = dataSource.properties.defaultSchema

    sql.query('select USERID, AUDIT_DETAILS from DEV.AUDIT_LOG T WHERE XMLEXISTS(\'\$s/*/user[id=\"' + id + '\" or username=\"'+username+'\"]\' passing T.AUDIT_DETAILS as \"s\") ORDER BY AUDIT_EVENT', []) { ResultSet rs ->
        while (rs.next()) { 
            def auditDetails = new XmlSlurper().parseText(rs.getString('AUDIT_EVENT_DETAILS'))
            println auditDetails.toString
        }
    }
    sql.close()
  }
}

现在这将为我提供包含这些审核详细信息的单元格。不好的是,它只是将字段中的所有信息放在没有元素标签的巨型字符串中。我将如何通过并将值分配给对象。我一直在尝试使用此示例 http://gallemore.blogspot.com/2008/04/groovy-xmlslurper.html,但没有成功,因为它适用于文件。

我必须遗漏一些东西。我尝试运行另一个 parseText(auditDetails) 但没有任何运气。

有什么建议吗?

编辑:

该字段看起来像 xml int

<user><username>scottsmith</username><timestamp>tues 5th 2009</timestamp></user>

^ 类似于它的样子,除了我的更长。它以“scottsmithtue 5th 2009”的形式出现,依此类推。我需要实际获取这些标签并将它们链接到我的对象,而不是仅仅将它们打印在一个连接的字符串中。

【问题讨论】:

  • xml 是什么样的?您的代码很好,打印 slurped xml 看起来就像您所说的那样

标签: parsing grails groovy xmlslurper


【解决方案1】:

做事

auditDetails.username

或者

auditDetails.timestamp

访问您需要的属性

【讨论】:

  • 感谢您的评论。我不得不比他多做一点,但这让我走上了正确的轨道
猜你喜欢
  • 1970-01-01
  • 2015-12-18
  • 2015-04-19
  • 2016-04-23
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 2016-02-08
  • 2014-08-14
相关资源
最近更新 更多