最近因为服务器移动,在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的配置的更多相关文章

  1. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

  2. Java Web的web.xml文件作用及基本配置(转)

    其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...

  3. 深入浅出如何解析xml文件---上篇

    xml小伙伴们并不陌生,xml是可扩展标记语言,标准通用标记语言语言的子集,是一种用来标记电子文件使其具有结构性的标记语言.我们知道xml可以用dom与sax等方法进行解析,但是xml为什么要解析呢? ...

  4. 【转载】Java Web的web.xml文件作用及基本配置

    其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...

  5. 曹工说Spring Boot源码(9)-- Spring解析xml文件,到底从中得到了什么(context命名空间上)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  6. Java解析XML文件的方式

    在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式 ...

  7. Android开发学习---使用XmlPullParser解析xml文件

    Android中解析XML的方式主要有三种:sax,dom和pull关于其内容可参考:http://blog.csdn.net/liuhe688/article/details/6415593 本文将 ...

  8. 使用dom4j创建和解析xml文件

    使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建x ...

  9. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  10. Java 创建过滤器 解析xml文件

    今天写了一个过滤器demo,现在是解析actions.xml文件,得到action中的业务规则:不需要导入任何jar包 ActionFilter过滤器类: package accp.com.xh.ut ...

随机推荐

  1. log4j2重复打印日志问题解决

    log4j2.xml <?xml version="1.0" encoding="UTF-8"?> <Configuration> &l ...

  2. Problem01 不死神兔

    题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析:兔子的规律为数列1,1,2,3,5,8,13,21 ...

  3. nc工具详解

    nc 安装    yum install -y nc参数: Command Summary: - Use IPv4 - Use IPv6 -D Enable the debug socket opti ...

  4. 转 python3中SQLLIT编码与解码之Unicode与bytes

    #########sample########## sqlite3.OperationalError: Could not decode to UTF-8 column 'logtype' with ...

  5. Flag-2019上半年

    1.坚持做博客记录,把日常学习到的技能以日记的形势进行呈现,每周进行总结: 2.2月底完成吴老师的机器学习视频课程: 3.6月底完成吴老师的深度学习视频课程: 相信自己,可以的,半年后见!

  6. MATLAB特殊矩阵以及矩阵转置

    特殊矩阵 通用特殊矩阵 zeros函数:产生全0矩阵,即零矩阵. ones函数:产生....1矩阵,即幺矩阵. eye函数:产生对角线为1的矩阵,当矩阵是方正时,得到单位矩阵. rand函数:产生(0 ...

  7. Python 科学工具使用

    Python 科学工具笔记 numpy a = numpy.array([1,2,3,4]);// 创建一个numpy的数组对象 此时a.shape显示的值为(4,); 由此得出结论在一维的数组中, ...

  8. POJ 1861 ——Network——————【最小瓶颈生成树】

    Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15268   Accepted: 5987   Specia ...

  9. Python常用模块二

    一.time & datetime #_*_coding:utf-8_*_ import time # print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了t ...

  10. phoneGap异步加载JS失败

    现在正在做一个phoneGap项目,安卓平台,有个异步加载JS总是失败,phoneGap也不好调试,一个问题纠结了一下午 最后找了半天,找到了原因,因此写本文记录一下,也顺便帮帮遇到同样问题的人 原因 ...