最近因为服务器移动,在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. python 多线程概念

    ######多线程##### 什么是线程: 线程是操作系统能够进行运算调度的最小单位(程序执行流的最小单元).它被包含在进程之中,是进程中的实际运作单位. 一个进程中可以并发多个线程,每条线程并行执行 ...

  2. mongodb 基础语法

    参考原文:菜鸟教程 目录 一.数据库二.文档三.索引四.聚合 一.数据库 show dbs -- 查看所有数据库 use DATABASE_NAME -- 如果数据库不存在,则创建数据库,否则切换到指 ...

  3. Linux进程控制理论及几种常见进程间通信机制

    1. Linux进程控制理论 ① 进程是一个具有一定独立功能的程序的一次运行活动(动态性.并发性.独立性.异步性). 进程的四要素: (1)有一段程序供其执行(不一定是一个进程所专有的),就像一场戏必 ...

  4. 读书笔记 - 《毛X东传》

    这个书名重复太多,这本的作者是迪克威尔逊.这本书很有意思,可以看出是一个局外人根据残缺不全的资料所写的出来的,而且是结合心理分析的手法主要描述政治历程.总体来说作为传记不够全面,但对于一个中国人来说可 ...

  5. mkpasswd的使用

    首先安装except包:yum -y install except 参数: -l # (密码的长度定义, 默认是 9) -d # (数字个数, 默认是 2) -c # (小写字符个数, 默认是 2) ...

  6. Vue 中怎么发起请求(一)

    1.vue 支持开发者引入 jquery 使用 $.ajax() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1.首先,在 package.json 中添加 j ...

  7. my12_xtrabackup压缩备份与恢复

    xtrabackup版本 # rpm -qa | grep xtrabackup percona-xtrabackup-24-2.4.12-1.el7.x86_64 此版本为目前比较新的版本(2018 ...

  8. (转)centOS wget的使用

    摘要:CentOS wget是一个从网络上自动下载文件的自由工具.它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理. 所谓的自动下载是指,CentOS wget可以在用户退出系统的之后在后 ...

  9. JEECMS站群管理系统-- 自定义标签及使用自己创建的表的实现过程

    下面是我自己定义的标签mycontent_list 首先,在数据库里创建了一个jc_mycontent的表,其中有id,title,content三个字段 其次,创建了一个实体类 public cla ...

  10. php 可逆的加密算法

    代码: <?php class Test { private $authCodeKey = 'khUvFB9pijNyCYMGZdzqeKalyg7dh'; function authCode( ...