dom4j是一個java的xml api,類似于jdom,用來讀寫xml文件的。dom4j是一個非常非常優秀的java xml api,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件,現在越來越多的java軟件都在使用dom4j來讀寫xml,特別值得一提的是連sun的jaxm也在用dom4j。這是必須使用的jar包。
上面說dom4j這么優秀,那么好用,那么從今天開始就跟大家一起分享dom4j的一些用法。
dom4j的主要接口都在org.dom4j這個包里定義:
要想弄懂這套接口,關鍵的是要明白接口的繼承關系:
讀寫xml文檔主要依賴于org.dom4j.io包,其中提供domreader和saxreader兩類不同方式,而調用方式是一樣的。這就是依靠接口的好處。
1
2
3
4
5
6
|
// 從文件讀取xml,輸入文件名,返回xml文檔 public document read(string filename) throws malformedurlexception, documentexception { saxreader reader = new saxreader(); document document = reader.read( new file(filename)); return document; } |
reader的read方法是重載的,可以通過inputstream, file, url等不同的參數來讀取。得到的document對象就帶表了整個xml。
根據本人自己的經驗,讀取的字符編碼是按照xml文件頭定義的編碼來轉換。如果遇到亂碼問題,注意要把各處的編碼名稱保持一致即可。
下面這個例子是saxreader類通過inputstream讀取xml文件:
所要讀取的xml文件:
1
2
3
4
5
6
7
8
9
|
<?xml version= "1.0" encoding= "utf-8" ?> <config> <db-info> <driver-name>oracle.jdbc.driver.oracledriver</driver-name> <url>jdbc:oracle:thin: @localhost : 1522 :mydb</url> <user-name>drp</user-name> <password>drp</password> </db-info> </config> |
讀取xml文件的類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
package com.util; import java.io.inputstream; import java.util.hashmap; import java.util.list; import java.util.map; import org.dom4j.document; import org.dom4j.documentexception; import org.dom4j.element; import org.dom4j.io.saxreader; /** * 解析sys-config.xml文件 * @author ronaldinho * */ public class xmlconfigreader { //懶漢式 private static xmlconfigreader instance = null ; //保存jdbc相關信息 private jdbcconfig jdbcconfig = new jdbcconfig(); private xmlconfigreader() { //建立一個saxreader對象 saxreader reader= new saxreader(); //通過當前線程的類加載器,獲得文件的相對路徑,讀入緩沖輸入流 inputstream in=thread.currentthread().getcontextclassloader().getresourceasstream( "sys-config.xml" ); try { //通過流來讀取xml文件 document doc=reader.read(in); //讀取jdbc相關信息 element drivernameelt=(element) doc.selectobject( "/config/db-info/driver-name" ); element urlelt=(element) doc.selectobject( "/config/db-info/url" ); element usernameelt=(element) doc.selectobject( "/config/db-info/user-name" ); element passwordelt=(element) doc.selectobject( "/config/db-info/password" ); //設置jdbc相關信息 jdbcconfig.setdrivername(drivernameelt.getstringvalue()); jdbcconfig.seturl(urlelt.getstringvalue()); jdbcconfig.setusername(usernameelt.getstringvalue()); jdbcconfig.setpassword(passwordelt.getstringvalue()); } catch (documentexception e) { e.printstacktrace(); } } public static synchronized xmlconfigreader getinstance() { if (instance== null ) { instance = new xmlconfigreader(); } return instance; } } |
上面這種方式是通過生成一個對象,這個對象實例化一個saxreader,然后將xml文件加載到流當中。再通過saxreader的read()方法將其轉換成一個document對象。然后通過這個document對象取到xml文件的節點的值。
今天就先簡單介紹一下利用dom4j讀取xml文件,后面會陸續跟大家說說其他的用法。大家不要著急哦。
ps:歡迎各位批評指正!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.csdn.net/liushuijinger/article/details/9737551