XML解析之dom4J

第一步:配置好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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值