第一步:配置好XML文件,下面是我配置的context.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<config>
<db_info>
<mysql_driver>com.mysql.jdbc.Driver</mysql_driver>
<mysql_url>jdbc:mysql://localhost:3306/</mysql_url>
<mysql_database>database</mysql_database>
<mysql_username>root</mysql_username>
<mysql_password>362502</mysql_password>
</db_info>
</config>
第二步:使用dom4J解析xml文件,导入jar包
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar
第三步:创建解析context.xml的类
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
/**
* 解析xml文件
* 采用单例设计模式
* @author zp
*/
public class Config {
private static Config config=null;
private static Conn connInfo; //用于存储配置信息
private Document doc;
//外界仅能通过此方法访问Config对象 注意用一个线程,因为单例模式有线程安全的问题,好比web我们学习的servlet,所以要加synchronized
public static synchronized Config getConfig(){
if(config==null){
config=new Config();
}
return config;
}
public static synchronized Config getConfig(){
if(config==null){
config=new Config();
}
return config;
}
//构造方法私有化
private Config(){
try {
//获取当前线程的输出流
doc = new SAXReader().read(Thread.currentThread().
getContextClassLoader().getResourceAsStream("context.xml")); //将xml转化为对应的dom对象
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Element driverElt=(Element) doc.selectObject("/config/db_info/mysql_driver"); //获得mysql_drivername标签内容
Element urlElt=(Element) doc.selectObject("/config/db_info/mysql_url"); //获得mysql_url标签内容
Element databaseElt=(Element) doc.selectObject("/config/db_info/mysql_database"); //获得mysql_database标签内容
Element usernameElt=(Element)doc.selectObject("/config/db_info/mysql_username"); //获得mysql_username标签内容
Element passwordElt=(Element)doc.selectObject("/config/db_info/mysql_password"); //获得mysql_password标签内容
//将配置信息存入connInfo对象中
String driver=driverElt.getStringValue();
String url=urlElt.getStringValue();
String database=databaseElt.getStringValue();
String username=usernameElt.getStringValue();
String password=passwordElt.getStringValue();
connInfo=new Conn(driver, url, username, password, database);
}
// //测试方法
// public static void main(String[] args) {
// //Config.getConfig();
// System.out.print(Config.getConfig().getConnInfo().getDriver());
// }
//获得配置信息方法
public Conn getConnInfo() {
return connInfo;
}
}
注意:在使用selectObject("/config/db_info/mysql_password")方法时,应当保证字符串与配置文件中的标签完全一致,否则获得的数据是非Element型。
另外:程序代码没有给出Conn.java文件内容,该文件用来存放解析出来的配置信息,相当于一个小型的javabean