什么是Dom4j及其初级使用方法

什么是Dom4j及其初级使用方法

(一)什么是Dom4j?

Dom4j是Document for Java的简称,是用java解析dom文档的组件。

在绝大多数应用中,都会需要配置文件。比如要将数据库从mysql改为oracle,使用配置文件会很方便,而不需要修改代码,所以解析配置文件、读取信息也是代码的一部分。

如今有很多种解析xml文件的方式:DOM、SAX、JDom、Dom4j等等。其中最优秀、使用最广的就是Dom4j。著名的Hibernate框架也是使用这的,Sun官方也是使用Dom4j的。关于上面四者的介绍与优缺点可参考:http://qqwyy.javaeye.com/blog/150227

(二)Dom4j怎么解析XML

下面我们就以数据库的配置文件为例,来讲解一下Dom4j是怎么解析xml文件的。

平时我们在用java代码连接数据库时,肯定会用到Class.forName(className);conn = DriverManager.getConnection(url,username, password);如果更换了数据库,就会更换className、url,或者更换了username、password,这样都会更改代码,这样的方式是不合理的。所以应该把这些会变更的代码提取在配置文件里,以后要更换了数据库,可以直接修改配置文件,而不用更改代码。数据库配置文件DBConfig.xml如下:

[xhtml]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3.      <db_config>  
  4.   
  5.               <driver-name>oracle.jdbc.driver.OracleDriver</driver-name>  
  6.   
  7.               <url>jdbc:oracle:thin:@localhost:1521:oracle</url>  
  8.   
  9.               <username>admin</username>  
  10.   
  11.               <password>admin</password>  
  12.   
  13.      </db_config>  

那么Dom4j怎么解析该xml文件呢?

首先要使用Dom4j先引入jar包。下载Dom4j,以dom4j-1.6.1为例:将dom4j-1.6.1.jar和lib/jaxen-1.1-beta-6.jar两jar包加入。

接着解析代码如下:

[java]  view plain  copy
  1. import org.dom4j.Document;  
  2.   
  3. import org.dom4j.DocumentException;  
  4.   
  5. import org.dom4j.Element;  
  6.   
  7. import org.dom4j.io.SAXReader;  
  8.   
  9.    
  10.   
  11. public class DBConfig {  
  12.   
  13.      static String[] dbInfo = new String[4];  
  14.   
  15.      // 使用单例模式  
  16.   
  17.      private static DBConfig instanse = null;  
  18.   
  19.    
  20.   
  21.      private DBConfig() {  
  22.   
  23.               Document d1 = null;  
  24.   
  25.               try {  
  26.   
  27.                        d1 = new SAXReader().read(Thread.currentThread()  
  28.   
  29.                                           .getContextClassLoader()  
  30.   
  31.                                           .getResourceAsStream("DBConfig.xml"));  
  32.   
  33.                        Element e1 = (Element) d1  
  34.   
  35.                                           .selectObject("/db_config/driver-name");  
  36.   
  37.                        Element e2 = (Element) d1.selectObject("/db_config/url");  
  38.   
  39.                        Element e3 = (Element) d1  
  40.   
  41.                                           .selectObject("/db_config/username");  
  42.   
  43.                        Element e4 = (Element) d1  
  44.   
  45.                                           .selectObject("/db_config/password");  
  46.   
  47.                        dbInfo[0] = e1.getStringValue();  
  48.   
  49.                        dbInfo[1] = e2.getStringValue();  
  50.   
  51.                        dbInfo[2] = e3.getStringValue();  
  52.   
  53.                        dbInfo[3] = e4.getStringValue();  
  54.   
  55.               } catch (DocumentException e) {  
  56.   
  57.                        e.printStackTrace();  
  58.   
  59.               }  
  60.   
  61.      }  
  62.   
  63.    
  64.   
  65.      public static DBConfig getInstance() {  
  66.   
  67.               if (instanse == null) {  
  68.   
  69.                        instanse = new DBConfig();  
  70.   
  71.               }  
  72.   
  73.               return instanse;  
  74.   
  75.      }  
  76.   
  77.    
  78.   
  79.      public String[] getDbInfo() {  
  80.   
  81.               return dbInfo;  
  82.   
  83.      }  
  84.   
  85.    
  86.   
  87.      //一个main测试方法:  
  88.   
  89. public static void main(String[] args){  
  90.   
  91.          String[] dbInfo = DBConfig. getInstance(). getDbInfo();  
  92.   
  93.          for(int i= 0;i< dbInfo.lenght;i++){  
  94.   
  95.                    System.out.println(dbInfo[i]);  
  96.   
  97. }  
  98.   
  99. }  
  100.   
  101. }  

 

代码使用单例模式,只有一个实例。在构造方法中读取DBConfig.xml文件并解析。这样读取一次后,以后就再也不用读取文件了,直接使用既可以了。如果要更换数据库,可以直接修改DBConfig.xml文件。

到此就完成了xml文件的解析。因此可以用Dom4j解析xml文件了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值