解析xml文件,修改Jenkins的配置
最近因为服务器移动,在Jenkins中配置的一些地址之类的,都要改变,如图,我因为使用插件Sidebar Links增加一个链接地址,现在地址变了,所以在Jenkins中配置就需要改动link url的地址,如图:

要改变成地址为:192.168.11.11,因为Jenkins的文件配置都是xml文件,我读取对应的xml文件,把文件内容进行更改在重写xml文件,xml文件如下。因为每个项目的url都需要更改,所以工作量还是很大的,所以写了个程序,去找到Jenkins下面所有的job,然后去更改Jenkins中的config.xml配置文件,就ok了

代码写的有些烂,
package other; import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter; import bsh.This;
import until.publicmethod; public class xmlDom {
static String path;//获取的路径
static Document document;
static String jointURl; /**
*
* @测试点: 遍历指定目录,获取文件路径
@param @param filePath
@param @return
* @备注: List<String>
* @author zhangjun
* @date 2017年9月18日
@修改说明
*/
public static List<String> geturl(String filePath) {
List<String> list = new ArrayList<String>();
File root = new File(filePath);
File[] files = root.listFiles();
for (File file : files) {
if (file.isDirectory()) {
list.add(file.getAbsolutePath());
//System.out.println("显示" + filePath + "下所有子目录及其文件" + file.getAbsolutePath());
}
}
return list;
} /**
*
* @测试点: 读取Jenkins的xml文件,修改指定的节点
* @验证点: TODO(这里用一句话描述这个方法的作用)
* @param @param url 需要传入的修改的xml文件路径
* @备注: void
* @author zhangjun
* @date 2017年9月18日
@修改说明
*/
public static void readerXml(String url) {
SAXReader reader = new SAXReader();
System.out.println("获取的url:"+jointURl);
try {
document = reader.read(new File(url));
// 通过reader对象的read方法加载books.xml文件,获取docuemnt对象。
Element bookStore = document.getRootElement();
// 通过element对象的elementIterator方法获取迭代器
Iterator it = bookStore.elementIterator();
// 遍历迭代器,获取根节点中的信息(书籍)
while (it.hasNext()) {
// System.out.println("=====开始遍历=====");
Element jenkinsjob = (Element) it.next();
// 获取book的属性名以及 属性值 // 解析子节点的信息,这个下面是否可以做优化,目前没有好的方案
Iterator jobs= jenkinsjob.elementIterator();
while (jobs.hasNext()) {
Element Child = (Element) jobs.next();
/*System.out.println("节点名:" + Child.getName() + "--节点值:" + Child.getStringValue());*/
if (Child.getName().equals("hudson.plugins.sidebar__link.ProjectLinks")) { Iterator node = Child.elementIterator();
while (node.hasNext()) {
Element Child2 = (Element) node.next();
System.out.println("节点名2:" + Child2.getName() + "--节点值2:" + Child2.getStringValue()); Iterator node2 = Child2.elementIterator();
while (node2.hasNext()) {
Element Child3= (Element) node2.next();
System.out.println(
"节点名3:" + Child3.getName() + "--节点值3:" + Child3.getStringValue()); Iterator node3 = Child3.elementIterator();
while (node3.hasNext()) {
Element Child4 = (Element) node3.next();
System.out.println(
"节点名4:" + Child4.getName() + "--节点值4:" + Child4.getStringValue());
if (Child4.getName().equals("url")) {
Child4.setText("http://192.168.11.11:8080/jenkins/job/new_rosewholesale_conventionpay/");
}
break;
}
} }
} }
} } catch (DocumentException e) {
e.printStackTrace();
System.out.println("读取文件错误");
}
/**
* 写入文件,重新生成xml文件
*/
try {
XMLWriter writer = new XMLWriter(new FileWriter(url));
writer.write(document);
writer.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("写入文件错误");
}
} //DOM4J 方式解析XML public static void main(String[] args) {
List<String> filespath=geturl("D:\\test\\test2\\");
for(int i=0;i<filespath.size();i++){
String filepath=filespath.get(i);
readerXml(filepath+"\\config.xml");
} } }

这样就可以更新xml文件了,不用手动去改动,但是这个时候公司已经做了域名映射,所以还是没有派上用场,可以先记录下吧
解析xml文件,修改Jenkins的配置的更多相关文章
- 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点
使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...
- Java Web的web.xml文件作用及基本配置(转)
其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...
- 深入浅出如何解析xml文件---上篇
xml小伙伴们并不陌生,xml是可扩展标记语言,标准通用标记语言语言的子集,是一种用来标记电子文件使其具有结构性的标记语言.我们知道xml可以用dom与sax等方法进行解析,但是xml为什么要解析呢? ...
- 【转载】Java Web的web.xml文件作用及基本配置
其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...
- 曹工说Spring Boot源码(9)-- Spring解析xml文件,到底从中得到了什么(context命名空间上)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- Java解析XML文件的方式
在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...
- Android开发学习---使用XmlPullParser解析xml文件
Android中解析XML的方式主要有三种:sax,dom和pull关于其内容可参考:http://blog.csdn.net/liuhe688/article/details/6415593 本文将 ...
- 使用dom4j创建和解析xml文件
使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- Java 创建过滤器 解析xml文件
今天写了一个过滤器demo,现在是解析actions.xml文件,得到action中的业务规则:不需要导入任何jar包 ActionFilter过滤器类: package accp.com.xh.ut ...
随机推荐
- Nginx常用rewrite跳转重定向实例
1.将www.myweb.com/connect 跳转到connect.myweb.com rewrite ^/connect$ http://connect.myweb.com permanent; ...
- Outlook 2010中263邮箱客户端设置
Outlook 2010中263邮箱客户端设置 1.首次添加电子邮箱账户:打开outlook,在账户设置和服务中分别选择:“手动配置服务器设置或其他服务器类型”,“Internet电子邮件” 2.在i ...
- CSS background-size contain 与cover的区别
最近在重温CSS,发现好多东西都忘了,比如background-size属性中,contain与cover的区别. 菜鸟教程上是这么说的: 有点难理解,通俗解释就是:两者均以保持图像宽高比的形式缩放来 ...
- 2.1 GO 变量定义
GO有四种数据类型,数字.布尔.字符.派生类型:这里使用前三种简单类型来说明变量的定义与使用 package main import "fmt" var ( aa = 1 bb = ...
- python 之 paramiko
""" 对app进行一些路由设置 """ """ 对socketio进行一些监听设置 "" ...
- vue proxyTable 接口跨域请求调试(五)
在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable: 在 config/index.js 配置文件中 dev: { env: requir ...
- Linpack之HPCG测试
平台信息 Description: CentOS Linux release 7.6.1810 (Core) 注意事项 安装HPL之前需要配置好: CXX编译器(检查:c++ -v) MPICH 并行 ...
- visual stdio使用
现在转换使用visual stdio,因为很多和以前的快捷键不同,也不打算换了,这样可移动性应该更好吧. 1.注释代码, 首先按下ctrl + k,然后再按下ctrl + c 2.取消注释,首先按下c ...
- Murano Weekly Meeting 2016.06.28
Meeting time: 2016.June.28 1:00~2:00 Chairperson: Kirill Zaitsev, from Mirantis Meeting summary: 1. ...
- Flume启动错误之:Bootstrap Servers must be specified
今天测试项目的时候需要启动Flume,然而在启动时遇到了Bootstrap Servers must be specified错误,错误日志如下: [kfk@bigdata-pro01 flume-- ...