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

时间:2018-08-21 01:48:49

标签: jenkins groovy xmlslurper

我使用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。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

Try changing ${colors.color[0].@primary} to ${colors.color[0]['@primary']}

答案 1 :(得分:2)

禁用“使用常规沙箱”。

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

如果未选中,则工作正常。 :)