在ReadyAPI中使用Groovy获取XML中Tag="A"的属性值方法咨询
提取XML中所有Tag属性为"A"的元素
你需要从给定的SOAP XML中提取所有Tag="A"的元素,现有代码仅能筛选Type="abg"的Cool标签,以下是实现需求的正确Groovy代码:
完整代码示例
def res = '''<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://abc" > <Cool Type="abc" > </Cool> <Cool Type="abg" > </Cool> <Cool Type="abg" > </Cool> <Cool Type="abg" > <Line LineID="0" Main="1"> <Info updateDate="17-05-2028" > <Selection Tag="A" Status="Offer"/> <Selection Tag="A" Status="Offer"/> <Selection Tag="A" Status="Offer"/> </Info> </Line> </Cool> <Cool Type="abg" > <Line LineID="0" Main="1"> <Info updateDate="17-05-2028" > <Selection Tag="A" Status="Offer"/> <Selection Tag="A" Status="Offer"/> <Selection Tag="A" Status="Offer"/> </Info> </Line> </Cool> </SOAP-ENV:Envelope> ''' xml = new XmlParser().parseText(res) // 筛选所有Tag属性值为"A"的元素 def results = xml.'**'.findAll { it.name() == 'Selection' && it.@Tag == 'A' } // 输出结果数量及元素信息 log.info("找到符合条件的元素数量: ${results.size()}") results.eachWithIndex { elem, index -> log.info("第${index+1}个元素: Tag=${elem.@Tag}, Status=${elem.@Status}") }
代码说明
xml.'**':利用Groovy的递归遍历语法,遍历XML文档中的所有节点findAll { it.name() == 'Selection' && it.@Tag == 'A' }:精准筛选出节点名为Selection且Tag属性值为"A"的元素- 通过
eachWithIndex遍历结果,输出元素数量及属性信息,可直接验证是否找到预期的6个元素
内容的提问来源于stack exchange,提问作者rhodes zheng
相关产品推荐
相关产品推荐

