【问题标题】:Need text values from non-nodes in XML response在 XML 响应中需要来自非节点的文本值
【发布时间】:2018-05-16 17:47:37
【问题描述】:

我有一个 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 中,对于我的生活,我无法弄清楚。

我对@9​​87654329@ 无能为力,因为这些合约值可能是任意长度的字符串,因此无法解析它。

救命!

【问题讨论】:

    标签: xml groovy xml-parsing


    【解决方案1】:

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

    【讨论】:

    • 问题的另一部分,我将如何按字母顺序对这些字符串进行排序。如果我转换为字符串列表,然后再转换回字符串,它看起来会很糟糕。 [B, A, C, T, F] 然后是 [[B, A, C, T, F]] 然后是 [ A, B, C , F], T] 这都被旧括号弄乱了/
    • 我更新了答案,加入了对 sort() 的调用,我相信这就是您要找的,对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 2015-12-10
    相关资源
    最近更新 更多