2013-04-12 3 views
0

Я звоню веб-службы, как это (используя rest плагин):Потребляя веб-службы

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

и получаю следующий ответ:

<?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> 

Я хотел бы преобразовать этот ответ объект, чтобы я мог сделать что-то вроде этого:

assert responseMap.id == 1 

Единственный способ, которым я знаю, как это сделать, - использовать Gpath expressio ns в блоке // process request, чтобы захватить отдельные записи и построить мой responseMap. Есть ли более простой способ? Отвечает ли этот ответ на некоторые «стандарты» и есть ли функции, облегчающие мою работу?

ответ

4

Вы можете просто сделать:

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

Чтобы проверить VALUE из KEY тега с name="id" является 1

Смежные вопросы