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文件
oracle.jdbc.driver.OracleDriver jdbc:oracle:thin: :1521:orcl followCar followCar
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配置文件 * 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); } } 延迟加载>