2014-05-23 2 views
0

다음과 같은 XML이 있습니다.groovy를 사용하여 XML 노드와 그 값을 가져 오는 방법은 무엇입니까?

xml1 = ''' 
<?xml version="1.0" encoding="UTF-8"?> 
<soap> 
    <group1> 
     <g1node1>g1value1</g1node1> 
     <g1node2>g1value2</g1node2> 
     <g1node3>g1value3</g1node3> 
    </group1> 
    <group2 attr="attrvalue1"> 
     <g2node1>g2value1</g2node1> 
     <g2node2>g2value2</g2node2> 
     <g2node3>g2value3</g2node3> 
    </group2> 
</soap> 
''' 

여기에서 모든 XML 노드와 해당 값을 출력 결과로 줄 단위 결과와 groovy 목록으로 가져와야합니다. 출력은

out = [g1node1 : "g1value1", g1node2 : "g1value2", ...and so on...] 

사람이 어떻게 그루비 코드와이를 달성하기 위해 나를 도울 수 아래처럼 멋있는지도

g1node1 = g1value1 
g1node2 = g1value2 
... and so on... 

또는 하나 같이해야합니까?

나는 여전히 (팀이 언급 한 바와 같이) 아직 시도 무엇인지 알고 싶습니다
+1

당신은 당신이 시도한 코드를 게재 할 수 있습니까? –

+0

이 질문은 꽤 유사하다고 생각합니다. http://stackoverflow.com/q/23632849/2504101. 제공된 답변을 살펴보십시오. – olyv

답변

0

하지만 여기 내 가려움이된다

def result = new XmlSlurper().parseText(xml) 
result.'**'.collectEntries { !it.childNodes() ? [ it.name(), it.text() ] : [:] } 
+0

나는 groovy에 익숙하지 않은 나는 아래처럼 시도했다. 나는 googled하고 키워드 'collectEntries'를 알아 낸다. 그러나 내가 필요한 것에 다가 갈 수 없었습니다. xml1 = 새로운 파일 ("C : \\ 정크 \\해서 a.txt"). 텍스트 데프 XmlParser가 = 새로운 XmlParser가() 아웃 = xmlParser.parseText (xml1) 밖으로 '**'collectEntries { .. println it.text() } 그리고 나는 아래 예외를 가지고 있고 코드가 잘못되었다는 것을 알고 있습니다. g1value1g1value2g1value3g2value1g2value2g2value3 예외 발생 java.lang.NullPointerException이 ConsoleScript62.run에서 \t (ConsoleScript62 : 6) – mmar

+0

** @ dmahapatro ** 시간과 도움을 감사합니다. 난 당신의 코드를 시도하고 작업 및 결과> 아래와 같이 표시 나는이 개 질문이 [g1node1 : g2value3 g1value1, g1node2 : g1value2, g1node3 : g1value3, g2node1 : g2value1, g2node2 : g2value2, g2node3]. 1. (큰 따옴표) ""에 값을 넣을 수 있습니까? 2. SoapUI (내 자동화 도구)에서 동일한 코드를 실행할 때 "out. ** '을 사용하는 행에서 nullpointer 예외가 발생합니다. collectEntries {..." ? – mmar

관련 문제