需要XML响应中非节点的文本值

时间:2018-05-16 17:47:37

标签: xml groovy xml-parsing

我有一个XML格式的API回复如下:

 <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 :(得分:0)

这应该可以解决问题(我纠正了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']