2013-05-13 108 views
0

我有一个查询,在我的表中带回一个单元格中的所有xml。我有它,所以我可以吐出没有任何分隔符的单元格中的内容。现在我需要实际采取每个单独的元素并将它们与我的对象链接。有没有简单的方法来做到这一点?XmlSlurper解析查询结果

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),但没有任何运气。

有什么建议吗?

编辑:

int值字段中的XML是什么样子

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

^simular它是如何除雷是一个很大更长。它出现在“scottsmithtue 5th 2009”等等。我需要实际采取这些标签并将它们链接到我的对象,而不是将它们打印在一个连体字符串中。

+1

什么是XML样子的属性?你的代码是好的,打印诽谤xml看起来像你说你得到 – 2013-05-13 19:23:28

回答

2

只是做

auditDetails.username 

或者

auditDetails.timestamp 

要访问所需

+0

感谢您的评论。我不得不做更多的他,但它让我走上了正确的轨道 – CoffeePeddlerIntern 2013-05-13 20:50:19