Нужны текстовые значения из не узлов в ответе XML - PullRequest
0 голосов
/ 16 мая 2018

У меня есть ответ API в формате XML следующим образом:

 <SearchReply>
      <Status>
           SUCCESS
      </Status>
      <Itinerary>
         <Ticket>
              Boston
         </Ticket>
         <Price>
              10.00
         </Price>
      <Contract>
         A
      <Contract>
      <Contract
         B
       </Contract> 
 </SearchReply>

Я могу ходить по узлам маршрута весь день и собирать все данные.

скажем, XML-ответ находится в переменной doc. doc.text() будет содержать полный ответ. doc.Contracts.text() содержит AB. Я хочу собрать A, затем B и так далее и поместить их в arraylist в алфавитном порядке, и я не могу этого понять.

Я ничего не могу сделать с AB, потому что эти значения Контракта могут быть строкой ЛЮБОЙ длины, поэтому нет способа ее проанализировать.

Помощь!

1 Ответ

0 голосов
/ 16 мая 2018

Это должно сработать (я исправил некоторые проблемы синтаксического анализа в XML, которых, как я полагаю, в настоящем XML не существует). Вызов sort сортирует вещи лексикографически, а не по алфавиту.

def contracts = new XmlSlurper().parseText(''' <SearchReply>
      <Status>
           SUCCESS
      </Status>
      <Itinerary>
         <Ticket>
              Boston
         </Ticket>
         <Price>
              10.00
         </Price>
      </Itinerary>
      <Contract>
         B
      </Contract>
      <Contract>
         A
       </Contract> 
 </SearchReply>''').Contract
                   .collect { it.text().trim() }
                   .sort()

assert contracts == ['A', 'B']
...