You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:10:35