java解析Tomcat配置文件server.xml

        因为工作缘故,需要对Tomcat配置文件server.xml进行解析,导出层级关系到数据库,查找相关资料,再加上在同事的帮助下,解决了这个问题,代码如下:

package com.test;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4j {
	
	class ParChlNode{
		public String getParent() {
			return parent;
		}
		public void setParent(String parent) {
			this.parent = parent;
		}
		public String getChild() {
			return child;
		}
		public ParChlNode(String parent, String child) {
			super();
			this.parent = parent;
			this.child = child;
		}
		public void setChild(String child) {
			this.child = child;
		}
		String parent;
		String child;
	}
	
	private  List<ParChlNode> listElementRel = null;
	public static void main(String[] args) throws Exception{
		
		Dom4j dom4j = new Dom4j();
		dom4j.readXML();
		
	}

	public void readXML() throws DocumentException{
		
		// 创建saxReader对象  
        SAXReader reader = new SAXReader();  
        // 通过read方法读取一个文件 转换成Document对象  
        Document document = reader.read(new File("D:\\Apache-tomcat\\apache-tomcat-7.0.78\\conf\\server.xml"));  
        //获取根节点元素对象  
        Element node = document.getRootElement();
        //String name = node.getName();
        //String nodes = document.getDocument().getName();
        //遍历所有的元素节点  
        //System.out.println(name);
        //System.out.println(nodes);
        //elementMethod(node);
        listElementRel = new ArrayList<ParChlNode>();
        listNode(node);
        for(ParChlNode parNode: listElementRel){
        	
        	System.out.print("key的值是:"+parNode.getParent()+";");
        	System.out.println("value的值是:"+parNode.getChild());
        }        
	}
	
	public void listNode(Element node) {
		
/*        @SuppressWarnings("unchecked")
		List<Attribute> list = node.attributes();  
        // 遍历属性节点  
        for (Attribute attr : list) { 
        	String attrs = attr.getName();
            //System.out.println("节点内容名称:"+attrs); //attr.getText() + "-----" + "---" + attr.getValue()
        }  
        if (!(node.getTextTrim().equals(""))) {  
            //System.out.println("文本内容::::" + node.getText());  
        } 
*/
        // 当前节点下面子节点迭代器  
        @SuppressWarnings("unchecked")
		Iterator<Element> it = node.elementIterator();  
        // 遍历  
        while (it.hasNext()) {  
            // 获取某个子节点对象  
            Element e = it.next();  
            // 对子节点进行遍历  
            listNode(e);
            listElementRel.add(new ParChlNode(node.getName(), e.getName()));
            //System.out.println("e:"+e.getName());
        }	
	}
	}

下面为生成的结果:

key的值是:Server;value的值是:Listener
key的值是:Server;value的值是:Listener
key的值是:Server;value的值是:Listener
key的值是:Server;value的值是:Listener
key的值是:Server;value的值是:Listener
key的值是:Server;value的值是:Listener
key的值是:GlobalNamingResources;value的值是:Resource
key的值是:Server;value的值是:GlobalNamingResources
key的值是:Service;value的值是:Connector
key的值是:Service;value的值是:Connector
key的值是:Realm;value的值是:Realm
key的值是:Engine;value的值是:Realm
key的值是:Host;value的值是:Valve
key的值是:Engine;value的值是:Host
key的值是:Service;value的值是:Engine
key的值是:Server;value的值是:Service

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值