[英]Parse xml file in groovy
我正在嘗試為 jenkins 解析 groovy 中的 xml 文件並將特定值保存到變量中。 XML文件:
<?xml version='1.1' encoding='UTF-8'?>
<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject plugin="workflow-multibranch@2.21">
<actions/>
<description></description>
<properties>
<org.jenkinsci.plugins.docker.workflow.declarative.FolderConfig plugin="docker-workflow@1.23">
<dockerLabel></dockerLabel>
<registry plugin="docker-commons@1.16"/>
</org.jenkinsci.plugins.docker.workflow.declarative.FolderConfig>
</properties>
<folderViews class="jenkins.branch.MultiBranchProjectViewHolder" plugin="branch-api@2.5.6">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</folderViews>
<healthMetrics>
<com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@6.12">
<nonRecursive>false</nonRecursive>
</com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric>
</healthMetrics>
<icon class="jenkins.branch.MetadataActionFolderIcon" plugin="branch-api@2.5.6">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</icon>
<orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@6.12">
<pruneDeadBranches>true</pruneDeadBranches>
<daysToKeep>10</daysToKeep>
<numToKeep>10</numToKeep>
</orphanedItemStrategy>
<triggers/>
<disabled>false</disabled>
<sources class="jenkins.branch.MultiBranchProject$BranchSourceList" plugin="branch-api@2.5.6">
<data>
<jenkins.branch.BranchSource>
<source class="jenkins.plugins.git.GitSCMSource" plugin="git@4.2.2">
<id>abcdefg</id>
<remote>git@github.com:x/y.git</remote>
<credentialsId>githubcredentials</credentialsId>
<traits>
<jenkins.plugins.git.traits.BranchDiscoveryTrait/>
<jenkins.scm.impl.trait.WildcardSCMHeadFilterTrait plugin="scm-api@2.6.3">
<includes>branch*</includes>
<excludes></excludes>
</jenkins.scm.impl.trait.WildcardSCMHeadFilterTrait>
</traits>
</source>
<strategy class="jenkins.branch.DefaultBranchPropertyStrategy">
<properties class="java.util.Arrays$ArrayList">
<a class="jenkins.branch.BranchProperty-array">
<jenkins.branch.NoTriggerBranchProperty/>
</a>
</properties>
</strategy>
</jenkins.branch.BranchSource>
</data>
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
</sources>
<factory class="org.jenkinsci.plugins.workflow.multibranch.WorkflowBranchProjectFactory">
<owner class="org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject" reference="../.."/>
<scriptPath>ci/x/y.jenkinsfile</scriptPath>
</factory>
</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject>
我需要寫入變量的值是“branch*”,來自“jenkins.scm.impl.trait.WildcardSCMHeadFilterTrait”。
到目前為止我做了什么:
def job = "ci/x/y.jenkinsfile"
def config = job.getConfigFile()
println("[INFO] loading xml: " + config)
File file = config.getFile()
def xml=new XmlParser().parse(file)
現在,如果我添加這段代碼“println xml.children()”,我確實可以從動作開始。 因此,我嘗試添加“println xml.children().sources()”以及更多內容以達到我想要的值,但我不斷收到錯誤消息。
對 XML 結構了解不多
def xmlDetails = new XmlParser().parseText(xmlText)
def data= xmlDetails.
sources.
data.
"jenkins.branch.BranchSource".
source.traits.
"jenkins.scm.impl.trait.WildcardSCMHeadFilterTrait"."includes".text()
assert data=="branch*"
( https://blog.mrhaki.com/2009/10/groovy-goodness-reading-xml.html )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.