2013-05-13 2 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은 나의 ALOT 이상을 제외하고 얼마나에

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

^시뮬 것 같습니다. 그것은 "scottsmithtue 5th 2009"등등으로 나옵니다. 실제로 태그를 가져 와서 하나의 결합 문자열에 인쇄하는 대신 내 객체에 링크해야합니다.

+1

무엇 XML이 생겼 필요한 속성에 액세스하려면

auditDetails.username 

또는

auditDetails.timestamp 

합니까? 귀하의 코드는 괜찮아요, 당신이 얻고 있다고 말하는 것과 같이 털어 놓은 xml을 인쇄합니다. –

답변

2

그냥 당신이

+0

주석 주셔서 감사합니다. 나는 그의 것보다 많은 릴을해야했다. 그러나 그것은 바른 길에서 나를 얻었다 – CoffeePeddlerIntern