Groovy 및 XmlSlurper를 사용하여 HTTP URL을 통해 XML을 구문 분석하고 태그와 관련된 값을 출력 할 수 있습니다. 아래는 생성 된 샘플 XML 페이지입니다.Groovy 및 XmlSlurper를 사용하여 XML을 구문 분석하고 태그를 반복하십시오.
<worklog>
<worklog_id>10100</worklog_id>
<issue_key>TST-3</issue_key>
<hours>2.0</hours>
<work_date>2014-01-01</work_date>
<work_date_time>2014-01-01 00:00:00</work_date_time>
<username>admin</username>
<reporter>admin</reporter>
</worklog>
<worklog>
<worklog_id>10200</worklog_id>
<issue_key>TST-3</issue_key>
<work_date>2014-01-02</work_date>
<work_date_time>2014-01-02 00:00:00</work_date_time>
<username>admin</username>
<reporter>admin</reporter>
</worklog>
<worklog>
<worklog_id>10201</worklog_id>
<issue_key>TST-3</issue_key>
<hours>0.25</hours>
<work_date>2014-01-02</work_date>
<work_date_time>2014-01-02 10:33:00</work_date_time>
<username>admin</username>
<reporter>admin</reporter>
</worklog>
<worklog>
<worklog_id>10400</worklog_id>
<issue_key>TST-3</issue_key>
<hours>2.0</hours>
<work_date>2014-01-07</work_date>
<work_date_time>2014-01-07 12:03:00</work_date_time>
<username>admin</username>
<reporter>admin</reporter>
</worklog>
<worklog>
<worklog_id>10202</worklog_id>
<issue_key>TST-4</issue_key>
<hours>1.0</hours>
<work_date>2014-01-02</work_date>
<work_date_time>2014-01-02 15:52:00</work_date_time>
<username>admin</username>
<reporter>admin</reporter>
</worklog>
그러나 XML에서는 XML을 통과하여 동일한 값을 가진 issue_key 태그를 찾아야합니다. 여기에 "TST-3"과 같은 값을 가진 issue_key 태그가 여러 개있는 경우이 work_date, work_date_time, username, activity_name, work_description, parent_key,이 단일 issue_key의 리포터 태그와 관련된 값을 수집하고 통합하려고합니다. 태그를 생성 한 다음 다른 issue_key 값을 갖는 다른 태그와 함께 생성 된 것과 동일한 순서로 출력합니다.
Groovy와 XmlSlurper의 완벽한 놈입니다. 그러나 아무도 그것에 대해 어떻게 가야할지 알려 줄 수는 없습니다. 또한 XML에서 속성을 가져 오는 내 Groovy 코드는 다음과 같습니다.
def worklogList = new ArrayList<Worklog>()
def wklog
def worklogs = new XmlSlurper().parse(new File("C:\\xml-worklog\\worklog.xml"))
worklogs.worklog.each {node ->
wklog = new Worklog();
wklog.work_date = node.work_date
wklog.work_date_time = node.work_date_time
wklog.issue_key = node.issue_key
wklog.hours = node.hours
wklog.username = node.username
wklog.reporter = node.reporter
worklogList.add(wklog)
}
worklogList.each {wklogT -> println(wklogT)}
}
class Worklog
{
String issue_key
String hours
String work_date
String work_date_time
String username
String activity_name
String work_descripton
String reporter
@Override
public String toString()
{
return "Issue Key: ${issue_key} \t Hours: ${hours} \t Work Date: ${work_date} \t Work Date Time: ${work_date_time} \t Username: ${username} \t Reporter: ${reporter} \t Activity Name: ${activity_name} \t Description: ${work_descripton}"
}
}
그리고 특정 이슈 키에 대한 기대 O/P,의 말을하자 'TST-3'이 -
근로 시간 | 근무일 | 근무일 시간 | 사용자 이름 | 취재원 |
2.0 | 2014-01-01 | 2014-01-01 00:00:00 | 관리자 | 관리자 |
| 2014-01-02 | 2014-01-02 00:00:00 | admin | admin |
0.25 | 2014-01-02 | 2014-01-02 10:33:00 | 관리자 | 관리자 |
2.0 | 2014-01-07 | 2014-01-02 12:03:00 | 관리자 | 관리자 |
이러한 값은 모든 issue_key 특성에 대해 정렬 된 목록 개체에서 어떻게 얻을 수 있습니까?
감사합니다. 나는 그루비 스크립팅으로 어떻게 돌아갈 수 있는지에 대해 완전히 비어 있습니다. 비슷한 issue_key 속성을 가진 세부 작업 로그 노드를 저장하는 방법은 ** TST-3 **을 정렬 된 순서로 하나의 목록에 저장하는 것입니다. 즉, 문제에 대해 작업 로그를 입력하는 순서와 다른 목록에 다른 작업 로그 노드를 입력하는 순서입니다 . 좀 더 밝혀 주실 수 있습니까? – Naren