Jenkins:在声明性管道中使用 XmlSlurper

Jenkins: Using XmlSlurper In Declarative Pipeline

使用 XmlSlurper,我正在尝试读取一个 XML 文件(特别是来自基于 .Net 的 API 的 Web.config)作为 Jenkins 管道的一部分。我似乎无法访问元素的任何属性。我得到的错误是:

No such field found: field groovy.util.slurpersupport.NodeChild primary

以下是我尝试将其分解为最简单的情况:

script {
    def xml = """
              <colors>
                  <color primary="true">Red</color>
                  <color primary="true">Yellow</color>
                  <color primary="true">Blue</color>
                  <color primary="false">Purple</color>
              </colors>                    
              """

    def colors = new XmlSlurper().parseText(xml)
    echo "First Color: ${colors.color[0]}" //works fine
    echo "First Color: ${colors.color[0]} Primary? ${colors.color[0].@primary}" //fails

}

我正在使用 Jenkins 2.121.1。

感谢任何帮助。

禁用"Use groovy sandbox".

问题的根源是通过 Jenkinsfile 编写的代码,我相信它总是在沙箱中运行。

未选中时工作正常。 :)

尝试将 ${colors.color[0].@primary} 更改为 ${colors.color[0]['@primary']}