使用Groovy脚本解析XML提取Ticket名称并存入用户属性咨询
Groovy解析XML提取Ticket属性正确实现方案
为什么不建议用字符串分割处理XML
- 字符串分割强依赖XML的固定排版,一旦出现换行、空格变化、属性顺序调整、新增其他属性就会完全失效
- 不符合XML解析的规范,稳定性和可维护性极差
正确实现方案
Groovy内置了XmlSlurper工具,专门用于轻量解析XML,实现代码如下:
// 获取原始XML文本 def xmlContent = job.getDocuments()[0].getText() // 初始化XmlSlurper,关闭校验避免不必要的异常 def xmlSlurper = new XmlSlurper(false, false) def rootNode = xmlSlurper.parseText(xmlContent) // 批量提取所有<Ticket>节点的name属性,转为字符串列表 def ticketNameList = rootNode.Ticket*.@name*.toString() // 输出验证结果(可选) println "提取到的Ticket名称列表:" ticketNameList.each { println "- ${it}" } // 保存到用户属性,示例为存为逗号分隔字符串,可根据实际需求调整存储格式 def userPropertyValue = ticketNameList.join(',') // 替换为你实际的用户属性存储逻辑即可 // 例如Jenkins场景下保存到构建用户属性:currentBuild.buildCauses.userId.setProperty('ticketNames', userPropertyValue)
效果验证
针对你提供的XML样本,上述代码提取的ticketNameList结果为:["Accept", "Afp", "Exe"],完全符合需求。
内容的提问来源于stack exchange,提问作者Soyem Sikandar Ali
相关产品推荐
相关产品推荐

