【java項目實戰】dom4j解析xml檔案,串連Oracle資料庫

來源:互聯網
上載者:User

標籤: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資料庫



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.