如何用Groovy遍历XML节点并提取值存为字符串变量?
解决Groovy遍历XML提取属性值的问题
先看你原有代码的问题:
- 闭包语法错误:
each(item -> println( "${tag.name}") item.children().each {tag -> ...}里两个语句之间缺少分隔符(分号或逗号),导致语法混乱 - 变量未定义:
${tag.name}中的tag在当前作用域不存在,所以输出了闭包对象的内存地址
下面是可靠的实现方案,帮你提取XML中的属性值并保存为字符串变量:
1. 正确解析XML并提取值
假设你的XML内容已存入字符串xmlContent,使用以下代码:
// 解析XML字符串 def xml = new XmlSlurper().parseText(xmlContent) // 用Map存储属性名与对应值,便于后续调用 def attrMap = [:] // 遍历每个item节点 xml.head.Details.items.item.each { item -> def attrName = item.AttrName.text().trim() def attrValue = item.AttrValue.text().trim() attrMap[attrName] = attrValue } // 提取为单独的字符串变量 def city = attrMap["City"] def street = attrMap["Street"] def number = attrMap["Number"] // 验证输出 println "City: $city" println "Street: $street" println "Number: $number"
2. 代码说明
XmlSlurper.parseText():将XML字符串解析为可遍历的节点对象item.AttrName.text():获取节点的文本内容,trim()用于去除文本前后可能存在的空格- 用Map存储键值对是最灵活的方式,若需要单独的字符串变量,直接从Map中取出即可
3. 运行结果
执行代码后会输出:
City: Rome Street: Via_del_Corso Number: 34
此时city、street、number就是你需要的字符串变量,可直接用于后续业务逻辑。
内容的提问来源于stack exchange,提问作者asdrubalo
相关产品推荐
相关产品推荐

