Groovy脚本读取xml文件并写入节点名称

时间:2016-12-28 09:58:56

标签: jenkins groovy

我正在研究Jenkins并使用Groovy脚本自动化部署过程。

为了处理密码,我保留了一个XML文件 - passwords.xml

<APP1>
    <development>
        <schema>
            <db1>pass1234</db1>
        </schema>
    </development>
    <test>
        <schema>
            <db1>pass1234</db1>
        </schema>
    </test>
    <production>
        <schema>
            <db1>pass1234</db1>
        </schema>
    </production>
</APP1>

现在我正在尝试创建一个属性文件,如

APP1.development.schema.db1=pass1234
APP1.test.schema.db1=pass1234
APP1.production.schema.db1=pass1234

我写了下面的groovy脚本,

def passwords_rails_app =  var_workspace + "/passwords.properties"
def passwords = new XmlParser().parseText(props_credential.passwords_url.text)

PrintWriter writer_passwords_rails_app = new PrintWriter(passwords_rails_app)

passwords.'**'.findAll{
  writer_passwords_rails_app.println(it.name() + "=" + it.name())
}
writer_passwords_rails_app.close()

但这只是创建属性文件,而不是在属性文件中写入节点名称。

建议我。

1 个答案:

答案 0 :(得分:0)

  rootNode.APP.each{ APP ->
    APP.development.schema.children().each{ tag ->
        writer_passwords_rails_app.println("${APP.@title}.development.schema.${tag.name()}=${tag.text()}")
  }
    APP.test.schema.children().each{ tag ->
        writer_passwords_rails_app.println("${APP.@title}.test.schema.${tag.name()}=${tag.text()}")
  }

    APP.production.schema.children().each{ tag ->
        writer_passwords_rails_app.println("${APP.@title}.production.schema.${tag.name()}=${tag.text()}")
  }

}

解决问题