2013-05-13 105 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