내 테이블에있는 모든 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"등등으로 나옵니다. 실제로 태그를 가져 와서 하나의 결합 문자열에 인쇄하는 대신 내 객체에 링크해야합니다.
무엇 XML이 생겼 필요한 속성에 액세스하려면
또는
합니까? 귀하의 코드는 괜찮아요, 당신이 얻고 있다고 말하는 것과 같이 털어 놓은 xml을 인쇄합니다. –