dom4j解析XML配置文件

Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。在程序中对于读取一些配置文件,一般都采用单例模式来做,比如jdbc数据库的连接配置文件。

下面定义一个叫做JdbcConfig的类来保存jdbc连接的一些信息,且覆盖了toString()方法

package com.xml.util;
 
/**
 * jdbc配置信息
 *
 */
public class JdbcConfig {
 
    @Override
    public String toString(){
        return this.getClass().getName()+"{driverName:"+driverName+",url:"+url+",userName:" +userName+"}";
    }
    //驱动名称 
    private String driverName;
    //驱动地址
    private String url;
    //用户名  
    private String userName;
    //密码
    private String passWord;
 
    public String getDriverName() {
        return driverName;
    }
    public void setDriverName(String driverName) {
        this.driverName = driverName;
    }
    public String getUrl() {
        return url;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
 
}

sys-config.xml为要解析的数据库信息的xml文件

<?xml version="1.0" encoding="UTF-8"?>  
<config>  
    <db-info>  
        <driver-name>oracle.jdbc.driver.OracleDriver</driver-name>  
        <url>jdbc:oracle:thin:@localhost :1521:orcl</url>  
        <username>followCar</username>  
        <password>followCar</password>  
    </db-info>  
</config>

XmlConfigReader使用dom4j来解析xml文件

package com.xml.util;
 
import java.io.InputStream;
 
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
 
/**
 * 采用单例模式解析XML配置文件 
 * @author  pinglq
 *
 */
public class XmlConfigReader {
    //单例模式-懒汉式(真正使用的时候实例化<延迟加载>)  
    private static XmlConfigReader instance =null;
 
    private JdbcConfig jdbcConfig = new JdbcConfig();
 
    //私有构造器,通过SAXReader的方式读取配置文件sys-config.xml文件中的数据库信息.
    private XmlConfigReader(){
        // 使用SAXReader的方式读取XML
        SAXReader reader = new SAXReader();
        //通过当前线程装载文件配置文件
        InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-conf.xml");
        try {
            //将配置文件装载到Document对象中  
            Document doc = reader.read(in);
            //采用Xpath方式获取配置文件中的相关信息
            //取得jdbc相关配置信息.
            Element driverName = (Element)doc.selectObject("/config/db-info/driver-name");
            Element url        = (Element)doc.selectObject("/config/db-info/url");  
            Element passWord   = (Element)doc.selectObject("/config/db-info/password");  
            Element userName   = (Element)doc.selectObject("/config/db-info/username");  
 
            //将从xml获取的配置信息写入jdbcConfig实例中  
            jdbcConfig.setDriverName(driverName.getStringValue());  
            jdbcConfig.setPassWord(passWord.getStringValue());  
            jdbcConfig.setUrl(url.getStringValue());  
            jdbcConfig.setUserName(userName.getStringValue());  
 
            System.out.println("读取jdbcConfig-->>"+jdbcConfig);  
        } catch (DocumentException  e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    //公共的静态的入口方法  
    //为了防止多线程多个对象保证单例,添加同步关键字synchronized.  
    public static synchronized XmlConfigReader getInstance(){
        //判断是否实例化
        if(instance==null){
            instance = new XmlConfigReader();
        }
        return instance;
    }
    //返回jdbc相关配置 
    public JdbcConfig getJdbcConfig(){
        return jdbcConfig;
    }
 
    //测试是否成功读取相关配置信息. 
    public static void main(String[] args){  
 
        JdbcConfig jdbcConfig =XmlConfigReader.getInstance().getJdbcConfig();  
 
        System.out.println(jdbcConfig.getDriverName());  
        System.out.println(jdbcConfig.getPassWord());  
        System.out.println(jdbcConfig.getUrl());  
        System.out.println(jdbcConfig.getUserName());  
        System.out.println(jdbcConfig);  
 
    }  
}

你可能感兴趣的:(xml,单例模式,dom4j)