代码之家  ›  专栏  ›  技术社区  ›  Peter Cook

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

  •  0
  • Peter Cook  · 技术社区  · 6 年前

    我有一个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 回复  |  直到 6 年前
        1
  •  0
  •   bdkosher Krishh    6 年前

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