什么是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如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <db_config>
- <driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
- <url>jdbc:oracle:thin:@localhost:1521:oracle</url>
- <username>admin</username>
- <password>admin</password>
- </db_config>
那么Dom4j怎么解析该xml文件呢?
首先要使用Dom4j先引入jar包。下载Dom4j,以dom4j-1.6.1为例:将dom4j-1.6.1.jar和lib/jaxen-1.1-beta-6.jar两jar包加入。
接着解析代码如下:
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- public class DBConfig {
- static String[] dbInfo = new String[4];
- // 使用单例模式
- private static DBConfig instanse = null;
- private DBConfig() {
- Document d1 = null;
- try {
- d1 = new SAXReader().read(Thread.currentThread()
- .getContextClassLoader()
- .getResourceAsStream("DBConfig.xml"));
- Element e1 = (Element) d1
- .selectObject("/db_config/driver-name");
- Element e2 = (Element) d1.selectObject("/db_config/url");
- Element e3 = (Element) d1
- .selectObject("/db_config/username");
- Element e4 = (Element) d1
- .selectObject("/db_config/password");
- dbInfo[0] = e1.getStringValue();
- dbInfo[1] = e2.getStringValue();
- dbInfo[2] = e3.getStringValue();
- dbInfo[3] = e4.getStringValue();
- } catch (DocumentException e) {
- e.printStackTrace();
- }
- }
- public static DBConfig getInstance() {
- if (instanse == null) {
- instanse = new DBConfig();
- }
- return instanse;
- }
- public String[] getDbInfo() {
- return dbInfo;
- }
- //一个main测试方法:
- public static void main(String[] args){
- String[] dbInfo = DBConfig. getInstance(). getDbInfo();
- for(int i= 0;i< dbInfo.lenght;i++){
- System.out.println(dbInfo[i]);
- }
- }
- }
代码使用单例模式,只有一个实例。在构造方法中读取DBConfig.xml文件并解析。这样读取一次后,以后就再也不用读取文件了,直接使用既可以了。如果要更换数据库,可以直接修改DBConfig.xml文件。
到此就完成了xml文件的解析。因此可以用Dom4j解析xml文件了。