標籤:oracle xml dom4j
簡介
dom4j是由dom4j.org出品的一個開源XML解析包。這句話太官方,我們還是看一下官方給出的解釋。如:
dom4j是一個便於使用的、開源的,用於解析XML,XPath和XSLT等語言的庫。它應用於Java平台,採用了Java集合架構並完全支援DOM,SAX和JAXP等編程標準。
特點
dom4j是一個非常非常優秀的Java XML API,具有效能優異、功能強大和極端易用的特點,同時它也是一個開放原始碼的軟體。如今你可以看到越來越多的Java軟體都在使用dom4j來讀寫XML,例如Hibernate,包括sun公司自己的JAXM也用了dom4j。
下載
既然dom4j具有上面N多的優點,所以我們必須揭開dom4j的神秘面紗。使用dom4j開發,需下載dom4j相應的jar檔案。
1.官網下載::http://www.dom4j.org/dom4j-1.6.1/
2.dom4j是sourceforge.net上的一個開源項目,因此可以到http://sourceforge.net/projects/dom4j下載其最新版
開啟dom4j-1.6.1的解壓檔案,我們可以看到有docs協助的檔案夾,也有dom4j解析xml檔案的dom4j-1.6.1.jar檔案。我們只需要把dom4j-1.6.1.jar檔案構建到我們開發的項目中就可以使用dom4j開發了。
執行個體
下面我們使用dom4j讀取系統設定檔,實現串連Oracle資料庫的功能。在開始之前,將我們需要的jar構建到我們的項目中,例如:
1、將Oracle jdbc驅動拷貝到WEB-INF/lib下
2、將dom4j相關的jar拷貝到WEB-INF/lib下
(1)dom4j-1.6.1.jar
(2)jaxen-1.1-beta-6.jar(支援xpath相關的jar包)
串連資料庫類:DbUitl.java
package util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DbUtil {/** * 取得Connection * @return */public static Connection getConnection(){Connection conn=null;try {JdbcConfig jdbcConfig = XmlConfigReader.getInstance().getJdbcConfig();//擷取oracle驅動的路徑Class.forName(jdbcConfig.getDriverName());// String url = "jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL";// 資料庫連接,oracle代表串連的是oracle資料庫;thin:@MyDbComputerNameOrIP代表的是資料庫所在的IP地址(可以保留thin:);//1521代表串連資料庫的連接埠號碼;ORCL代表的是資料庫名稱conn = DriverManager.getConnection(jdbcConfig.getUrl(), jdbcConfig.getUserName(), jdbcConfig.getPassword());} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}}
資料庫設定檔:sys-config.xml
<?xml version="1.0" encoding="UTF-8"?><config><db-info><driver-name>oracle.jdbc.driver.OracleDriver</driver-name><url>jdbc:oracle:thin:@localhost:1521:oracle</url><user-name>drp1</user-name><password>drp1</password></db-info></config>
jdbc的配置資訊:JdbcConfig.java
package util;/** * jdbc配置資訊 * @author liang * */public class JdbcConfig {private String driverName;private String url;private String userName;private String password;public String getDriverName() {return driverName;}public void setDriverName(String driverName) {this.driverName = driverName;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
dom4j讀取xml:XmlConfigReader.java
package util;import java.io.InputStream;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;/** * 採用單例解析sys-config.xml檔案 * @author liang * */public class XmlConfigReader {//單例懶漢式(消極式載入lazy)//設定為空白,使用在new,不用不newprivate static XmlConfigReader instance = null;//定義JdbcConfig成員變數,儲存jdbc相關配置資訊private JdbcConfig jdbcConfig = new JdbcConfig();;private XmlConfigReader(){//建立saxReader對象SAXReader reader = new SAXReader();//通過當前線程的類載入器,獲得檔案的相對路徑,將xml檔案讀入到輸入資料流InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");try { // 通過read方法讀取xml檔案, 轉換成Document對象 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;}/** * 返回jdbc的相關配置 * @return */public JdbcConfig getJdbcConfig(){return jdbcConfig;}}
解析:讀寫XML文檔主要依賴於org.dom4j.io包,其中提供DOMReader和SAXReader兩類不同方式,而調用方式是一樣的。這就是依靠介面的好處。
其中,reader的read方法是重載的,可以從InputStream, File, Url等多種不同的源來讀取,得到的Document對象就代表了整個XML。
dom4j解析xml的四步
1、以單例模式建立SAXReader對象
2、將xml檔案讀入到輸入資料流中
3、read方法讀取xml檔案,轉換成document對象
4、通過document對象取到xml檔案的節點值
總結
俗話說的好:站在巨人的肩膀上。dom4j就是巨人,能夠清楚的認識dom4j,並會使用就ok了。
支援源碼下載:dom4j解析xml,串連oracle資料庫