解析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文件了,不用手动去改动,但是这个时候公司已经做了域名映射,所以还是没有派上用场,可以先记录下吧

时间: 2024-11-06 03:43:35

解析xml文件,修改Jenkins的配置的相关文章

Java解析XML文件的四种方法

[摘要] 可扩展标志语言(XML)在实现信息标准化.信息的交流与共享上有其独特的技术优势,因此受到了广泛的重视.本文先简单的介绍了XML基本知识,然后从XML应用入手总结了四种现今最常见的XML的解析方法,介绍了这四种方法的特点,其中包括优点与不足之处.最后给出了一个简单的案例来对这四种解析进行代码介绍. [关键字] XML文件,DOM,SAX,JDOM,DOM4J [引言] XML即可扩展标记语言(EXtensible Markup Language),是标准通用标记语言的子集,是一种用于标记

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

写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean Definition到底是什么,咱们对着接口,逐个方法讲解 曹工说Spring Boot源码(3)-- 手动注册Bean Definition不比游戏好玩吗,我们来试一下 曹工说Spring Boot源码(4)-- 我是怎么自定义ApplicationContext,从json文件读取bean de

Java解析XML文件的方式

在项目里,我们往往会把一些配置信息放到xml文件里,或者各部门间会通过xml文件来交换业务数据,所以有时候我们会遇到“解析xml文件”的需求.一般来讲,有基于DOM树和SAX的两种解析xml文件的方式,在这部分里,将分别给大家演示通过这两种方式解析xml文件的一般步骤. 1 XML的文件格式     XML是可扩展标记语言(Extensible Markup Language)的缩写,在其中,开始标签和结束标签必须配套地出现,我们来看下book.xml这个例子. 1 <?xml version=

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

Android中解析XML的方式主要有三种:sax,dom和pull关于其内容可参考:http://blog.csdn.net/liuhe688/article/details/6415593 本文将主要介绍pull解析器解析xml文件,环境为ubuntu 12.04+ intelij 13.1 + android sdk 2.1 一.创建一个XML项目,步骤如下: 二.解析一个xml文件: assets/person.xml <?xml version="1.0" encodi

Dom方法,解析XML文件

Dom方法,解析XML文件的基本操作 1 package com.demo.xml.jaxp; 2 3 import java.io.IOException; 4 5 import javax.xml.parsers.DocumentBuilder; 6 import javax.xml.parsers.DocumentBuilderFactory; 7 import javax.xml.parsers.ParserConfigurationException; 8 import javax.x

解析xml文件作为下拉列表的数据源

需求:有一个xml文件,包含省市县的信息(id,name,下属分划) 将xml文件信息解析到安卓下拉列表(spinner),三个下拉列表,第一个显示省名,第二个显示市名,第三个显示县名 要求选择第一个下拉列表的一个省名,相应市县信息跟随变化 方案分析: 1.因为要解析xml文件的全部信息,可以选择pull解析或者sax解析 2.有省.市.县等信息 则要有三个对应的实体类 xml文件 部分内容 1 - <p p_id="01"> 2 <pn>北京</pn&g

使用dom4j创建和解析xml文件

使用dom4j创建和解析xml文件 在项目开发中,我们经常会遇到xml文件的创建和解析从别人接口得到的xml文件,而我们最常使用的组件是dom4j. 下面我就以代码来讲解一下如何使用dom4j来创建xml文件. 1.项目结构 在这里我们要,引入dom4j中的两个jar包,分别是: dom4j-1.6.1: jaxen-1.1-beta-6: 2.简要介绍 >创建xml 的主要类 DocumentHelper document = DocumentHelper.createDocument();

Java之Pull方式生成xml文件和解析xml文件

Pull XML解析器早已经被google集成到android sdk当中,它是google官方推荐的解析器. 如果我们要在Java桌面.J2ME等当中使用Pull方式生成xml文件和解析xml文件,需要用到kxml2: KXML解析器是基于普通XML PULL解析器的一个小巧的解析器,官网是http://kxml.org/ 普通XML PULL解析器的官网是http://xmlpull.org/ 实验开始: 在Eclipse中新建一个java项目,其中新建一个libs文件夹,拷贝从网上下载的k

【java项目实战】dom4j解析xml文件,连接Oracle数据库

简介 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方,我们还是看一下官方给出的解释.如下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT等语言的库.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP等编程标准. 特点 dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例

SAX方式解析xml文件查看天气

1.SAX方式解析xml文件的步骤: ①创建解析器工厂对象 ②使用当前配置的工厂参数创建SAXParser对象 ③解析xml文件 ④利用DefaultHandler创建事件驱动者 2.对于标签对象进行引用怎么办? ①定义当前解析的标签:private String tagName=null; ②在startElement()方法中赋值tagName:this.tagName=qName; ③在endElement()方法中将tagName赋值为空:this.tagName=null; ④在cha