一、dom4j是什么?
dom4j是一个Java的XML API,用来读写XML文件的。具有性能优异、功能强大和极端易用使用的特点,应用极其广泛,sun公司的hibernate就是应用了dom4j
二、如何用?
获取document两种方法:
1.
SAXReader reader = new SAXReader();
Document document = reader.read(new File("sys-config.xml"));
2.
Document document = DocumentHelper.createDocument(); //创建根节点
Element root = document.addElement("root");
三、实例:采用单例模式利用dom4j读取sys-config.xml,获取jdbc配置字符串
1.项目web-inf/lib下copy dom4j-1.6.1.jar 文件
2.在类XMLConfigReader中
package com.bjpowernode.drp.util;
import java.io.InputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 解析sys-config文件,采用单例模式
* @author liushuo
*
*/
public class XmlConfigReader {
//饿汉式
/*private static XmlConfigReader instance = new XmlConfigReader();
private XmlConfigReader() {
}
public static XmlConfigReader getInstance() {
return instance;
}*/
//懒汉式(延迟加载)
private static XmlConfigReader instance =null;
private JdbcConfig jdbcConfig = new JdbcConfig();
private XmlConfigReader() {
SAXReader reader = new SAXReader();
InputStream in= Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");
try {
Document doc = reader.read(in);
//取得jdbc相关配置信息
Element driverNameEle =(Element) doc.selectObject("/config/db-info/driver-name");
Element urlEle =(Element) doc.selectObject("/config/db-info/url");
Element userNameEle =(Element) doc.selectObject("/config/db-info/user-name");
Element passwordEle =(Element) doc.selectObject("/config/db-info/password");
//设置jdbc相关配置
jdbcConfig.setDriverName(driverNameEle.getStringValue());//driver-name节点的内容
jdbcConfig.setUrl(urlEle.getStringValue());
jdbcConfig.setUserName(userNameEle.getStringValue());
jdbcConfig.setPasswrod(passwordEle.getStringValue());
} catch (DocumentException e) {
e.printStackTrace();
}
} //synchronized是个锁,具有互斥的作用,同步的关键字
public static synchronized XmlConfigReader getInstance() {
if (instance==null) {
instance = new XmlConfigReader();
}
return instance;
}
public JdbcConfig getJdbcConfig(){
return jdbcConfig;
}
public static void main(String[] args) {
//获取jdbc配置信息
JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();
/* System.out.println(jdbcConfig.getDriverName());
System.out.println(jdbcConfig.getUrl());
System.out.println(jdbcConfig.getPasswrod());
System.out.println(jdbcConfig.getUserName());*/
System.out.println(jdbcConfig);
}
}
console输出:com.bjpowernode.drp.util.JdbcConfig{driverName:oracle.jdbc.driver.OracleDriver,url:jdbc:oracle:thin:@localhost:1521:orcl,username:root}