2017-07-26 60 views
0

深度嵌套的參數我在詹金斯的XML文件看起來像這樣:Groovy中得到詹金斯XML

<?xml version='1.0' encoding='UTF-8'?> 
<build> 
    <actions> 
    <hudson.model.ParametersAction> 
     <safeParameters class="sorted-set"/> 
     <parameters class="java.util.Arrays$ArrayList"> 
     <a class="hudson.model.ParameterValue-array"> 
      <hudson.model.StringParameterValue> 
      <name>branch</name> 
      <description></description> 
      <value>feature/MyAmazingBranch</value> 
      </hudson.model.StringParameterValue> 
      ... 
</build> 

我的目標建立一個gradle這個任務,將返回分支參數,在這種情況下feature/MyAmazingBranch

我已經能夠解析XML,並打印解析結果,但它目前對我沒有意義,而且我不確定如何訪問特定節點。

task getBranch { 
    ext.srcFile = file('build_jenkins.xml') 
    def buildFile = new XmlParser().parse(srcFile) 

    println buildFile 

} 

此打印:

build[attributes={}; value=[actions[attributes={}; value=[hudson.model.ParametersAction[attributes={}; value=[safeParameters[attributes={class=sorted-set}; value=[]], parameters[attributes={class=java.util.Arrays$ArrayList}; value=[a[attributes={class=hudson.model.ParameterValue-array}; value=[hudson.model.StringParameterValue[attributes={}; value=[name[attributes={}; value=[branch]], description[attributes={}; value=[]], value[attributes={}; value=[feature/WAWEB-6358-create-api-for-developer-applications]]]].... 

我怎麼會去訪問使用搖籃/ Groovy中參數名稱和值?

回答

0

下面創建你值的集合與父節點孩子hudson.model. &後綴ParameterValue在這中間的東西,這似乎是對的hudson.model.ParameterValue

def build = new XmlSlurper().parse(srcFile) 
def params = build.'**'.findAll{ node -> node.name() =~ /hudson.model.[\w.]+ParameterValue/ }*.value 
子類的前綴模式