使用MarkupBuilder构建xml文件时没有结束标签 [英] No closing tags while building xml file with MarkupBuilder

查看:72
本文介绍了使用MarkupBuilder构建xml文件时没有结束标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的Jenkins-Pipeline-Job中使用Groovy来建立我的Jenkins从站和已安装节点的状态列表.因此,我有一些列表应显示在xml中.在使用IntelliJ进行测试时,我编写了以下代码.

I want to use Groovy in my Jenkins-Pipeline-Job to build a Statuslist of my Jenkins Slaves and the installed nodes. Therefore I have some lists which should be displayed in xml. While testing with IntelliJ i wrote the following code.

import groovy.xml.MarkupBuilder

def listNodeNames = []
listNodeNames << 'SLAVE1_NODE_1'
listNodeNames << 'SLAVE1_NODE_2'
listNodeNames << 'SLAVE2_NODE_1'
listNodeNames << 'SLAVE2_NODE_2'


def listComputerNames = []
listComputerNames << 'SLAVE1'
listComputerNames << 'SLAVE2'

def stringWriter = new StringWriter()
def xmlBuilder = new MarkupBuilder(stringWriter)

xmlBuilder.computers {
    for (i = 0; i < listComputerNames.size(); i++){

        xmlBuilder.computer {
            xmlBuilder.computerName("${listComputerNames[i]}")
            xmlBuilder.computerStatus("online")

            for (j = 0; j < listNodeNames.size(); j++){
                if (listNodeNames[j].contains(listComputerNames[i])){
                    xmlBuilder.slave {
                        xmlBuilder.slaveName("${listNodeNames[j]}")
                        xmlBuilder.slaveStatus('test')
                        xmlBuilder.slaveReason('test')
                    }
                }
            }
        }

    }
}

def xml = stringWriter.toString()
println xml

只要我在IntelliJ中运行代码,一切就可以正常工作,并且我会得到一个有效的xml文件:

As long as i run the code in IntelliJ, everything works fine and i get a valid xml file:

  <computers>
      <computer>
        <computerName>SLAVE1</computerName>
        <computerStatus>online</computerStatus>
        <slave>
          <slaveName>SLAVE1_NODE1</slaveName>
          <slaveStatus>test</slaveStatus>
          <slaveReason>test</slaveReason>
        </slave>
        <slave>
          <slaveName>SLAVE1_NODE2</slaveName>
          <slaveStatus>test</slaveStatus>
          <slaveReason>test</slaveReason>
        </slave>
      </computer>
      <computer>
        <computerName>SLAVE2</computerName>
        <computerStatus>online</computerStatus>
        <slave>
          <slaveName>SLAVE2_NODE1</slaveName>
          <slaveStatus>test</slaveStatus>
          <slaveReason>test</slaveReason>
        </slave>
        <slave>
          <slaveName>SLAVE2_NODE2</slaveName>
          <slaveStatus>test</slaveStatus>
          <slaveReason>test</slaveReason>
        </slave>
      </computer>
    </computers>

但是,如果我在Jenkins实例上执行相同的脚本,则大多数结束标记都将丢失:

But if i execute the same script on my Jenkins instance most closing tags are missing:

<computers>
  <computer>
    <computerName>SLAVE1</computerName>
    <computerStatus>online</computerStatus>
    <slave>
      <slaveName>SLAVE1_NODE1</slaveName>
      <slaveStatus>test</slaveStatus>
      <slaveReason>test</slaveReason>
      <slave>
        <slaveName>SLAVE1_NODE2</slaveName>
        <slaveStatus>test</slaveStatus>
        <slaveReason>test</slaveReason>
        <computer>
          <computerName>SLAVE2</computerName>
          <computerStatus>online</computerStatus>
          <slave>
            <slaveName>SLAVE2_NODE1</slaveName>
            <slaveStatus>test</slaveStatus>
            <slaveReason>test</slaveReason>
            <slave>
              <slaveName>SLAVE2_NODE2</slaveName>
              <slaveStatus>test</slaveStatus>
              <slaveReason>test</slaveReason>

我是通过jenkins创建xml文件时做错了什么还是有特定步骤要做的?

Am i doing something wrong or are there specific steps to do while creating xml files via jenkins?

推荐答案

我知道了.我真的不明白为什么,但是MarkupBuilder hast必须封装在@nonCPS标记的方法内.如果我调用此方法,詹金斯(Jenkins)会按预期执行.

I figured it out. I don't really understand why but the MarkupBuilderhast du be capsuled inside a @nonCPSmarked method. If I call this method jenkins performs as expected.

@nonCPS
def buildXml(list1, list2){
    //generate xml from lists
}

buildXml(list1, list2)

这篇关于使用MarkupBuilder构建xml文件时没有结束标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆