2013-04-12 2 views
0
나는이 같은 웹 서비스를 호출하고있어

소비 :(<a href="http://grails.org/plugin/rest" rel="nofollow">rest</a> 플러그인을 사용하여) 웹 서비스

<?xml version="1.0" encoding="UTF-8" ?> 
<RESPONSE> 
    <MULTIPLE> 
     <SINGLE> 
      <KEY name="id"> 
       <VALUE>1</VALUE> 
      </KEY> 
      <KEY name="courseid"> 
       <VALUE>1</VALUE> 
      </KEY> 
      <KEY name="name"> 
       <VALUE>test</VALUE> 
      </KEY> 
      <KEY name="description"> 
       <VALUE>Test</VALUE> 
      </KEY> 
      <KEY name="descriptionformat"> 
       <VALUE>1</VALUE> 
      </KEY> 
      <KEY name="enrolmentkey"> 
       <VALUE>TEST</VALUE> 
      </KEY> 
     </SINGLE> 
    </MULTIPLE> 
</RESPONSE> 

내가이 응답을 변환하고 싶습니다 :

withRest(uri: "http://server.com") { 
    def response = post(path: '/webservice', query: [q: 'test']) 
    // process response 
} 

다음과 같은 반응을 얻고 이런 식으로 할 수있는 객체 :

assert responseMap.id == 1 

내가하는 방법을 알고있는 유일한 방법은 Gpath expressio를 사용하는 것입니다. 위의 // process request 블록에있는 ns를 사용하여 개별 입력을 가져오고 내 responseMap을 빌드하십시오. 더 쉬운 방법이 있습니까? 이 응답은 일부 '표준'을 따르며 내 일을 쉽게하기위한 기능이 있습니까?

답변

4

당신은 할 수 있습니다 :

new XmlSlurper().parseText(response) 
       .MULTIPLE.SINGLE.KEY 
       .find { [email protected] == 'id' } 
       .VALUE.text() == '1' 

name="id"KEY 태그의 VALUE1

입니다 확인하려면