溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

dom4j如何讀取XML文件

發(fā)布時(shí)間:2021-07-26 09:42:38 來(lái)源:億速云 閱讀:139 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下dom4j如何讀取XML文件,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

dom4j是一個(gè)Java的XML API,類似于jdom,用來(lái)讀寫XML文件的。dom4j是一個(gè)非常非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點(diǎn),同時(shí)它也是一個(gè)開(kāi)放源代碼的軟件,現(xiàn)在越來(lái)越多的Java軟件都在使用dom4j來(lái)讀寫XML,特別值得一提的是連Sun的JAXM也在用dom4j。這是必須使用的jar包。

上面說(shuō)dom4j這么優(yōu)秀,那么好用,那么從今天開(kāi)始就跟大家一起分享dom4j的一些用法。

dom4j的主要接口都在org.dom4j這個(gè)包里定義:

dom4j如何讀取XML文件

要想弄懂這套接口,關(guān)鍵的是要明白接口的繼承關(guān)系:

dom4j如何讀取XML文件

讀寫XML文檔主要依賴于org.dom4j.io包,其中提供DOMReader和SAXReader兩類不同方式,而調(diào)用方式是一樣的。這就是依靠接口的好處。

// 從文件讀取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方法是重載的,可以通過(guò)InputStream, File, Url等不同的參數(shù)來(lái)讀取。得到的Document對(duì)象就帶表了整個(gè)XML。
根據(jù)本人自己的經(jīng)驗(yàn),讀取的字符編碼是按照XML文件頭定義的編碼來(lái)轉(zhuǎn)換。如果遇到亂碼問(wèn)題,注意要把各處的編碼名稱保持一致即可。

下面這個(gè)例子是SAXReader類通過(guò)InputStream讀取xml文件:

所要讀取的xml文件:

<?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文件的類:

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相關(guān)信息 
 private JdbcConfig jdbcConfig = new JdbcConfig(); 
  
 private XmlConfigReader() { 
 
  //建立一個(gè)SAXReader對(duì)象 
  SAXReader reader=new SAXReader(); 
 
  //通過(guò)當(dāng)前線程的類加載器,獲得文件的相對(duì)路徑,讀入緩沖輸入流 
  InputStream in=Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml"); 
  try { 
   //通過(guò)流來(lái)讀取xml文件 
   Document doc=reader.read(in); 
    
   //讀取jdbc相關(guān)信息 
   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"); 
    
   //設(shè)置jdbc相關(guān)信息 
   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; 
 } 
}

上面這種方式是通過(guò)單例模式生成一個(gè)對(duì)象,這個(gè)對(duì)象實(shí)例化一個(gè)SAXReader,然后將xml文件加載到流當(dāng)中。再通過(guò)SAXReader的read()方法將其轉(zhuǎn)換成一個(gè)document對(duì)象。然后通過(guò)這個(gè)document對(duì)象取到xml文件的節(jié)點(diǎn)的值。

以上是“dom4j如何讀取XML文件”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI