欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

dom4j讀取XML文件詳解

 更新時(shí)間:2017年11月24日 09:48:25   作者:劉水鏡  
這篇文章主要為大家詳細(xì)介紹了dom4j讀取XML文件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

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

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


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

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

下面這個(gè)例子是SAXReader類通過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(); 
 
  //通過當(dāng)前線程的類加載器,獲得文件的相對(duì)路徑,讀入緩沖輸入流 
  InputStream in=Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml"); 
  try { 
   //通過流來讀取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; 
 } 
} 

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

今天就先簡(jiǎn)單介紹一下利用dom4j讀取xml文件,后面會(huì)陸續(xù)跟大家說說其他的用法。大家不要著急哦。

PS:歡迎各位批評(píng)指正!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis使用foreach批量更新數(shù)據(jù)報(bào)無效字符錯(cuò)誤問題

    Mybatis使用foreach批量更新數(shù)據(jù)報(bào)無效字符錯(cuò)誤問題

    這篇文章主要介紹了Mybatis使用foreach批量更新數(shù)據(jù)報(bào)無效字符錯(cuò)誤問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java集合框架入門之泛型和包裝類

    Java集合框架入門之泛型和包裝類

    Java 泛型(generics)是 JDK 5 中引入的一個(gè)新特性, 泛型提供了編譯時(shí)類型安全檢測(cè)機(jī)制,該機(jī)制允許程序員在編譯時(shí)檢測(cè)到非法的類型。泛型的本質(zhì)是參數(shù)化類型,也就是說所操作的數(shù)據(jù)類型被指定為一個(gè)參數(shù)
    2021-10-10
  • struts2標(biāo)簽總結(jié)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    struts2標(biāo)簽總結(jié)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)總結(jié)了struts2標(biāo)簽的使用方法,和學(xué)習(xí)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • java實(shí)現(xiàn)的滿天星效果實(shí)例

    java實(shí)現(xiàn)的滿天星效果實(shí)例

    這篇文章主要介紹了java實(shí)現(xiàn)滿天星效果的方法,涉及Java繪圖的應(yīng)用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-11-11
  • 淺談Spring Cloud Ribbon的原理

    淺談Spring Cloud Ribbon的原理

    這篇文章主要介紹了淺談Spring Cloud Ribbon的原理,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • C++實(shí)現(xiàn)掃雷游戲示例講解

    C++實(shí)現(xiàn)掃雷游戲示例講解

    這篇文章主要介紹了C++實(shí)現(xiàn)掃雷游戲示例講解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java如何實(shí)現(xiàn)List自定義排序

    Java如何實(shí)現(xiàn)List自定義排序

    這篇文章主要介紹了Java如何實(shí)現(xiàn)List自定義排序,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-09-09
  • Spring實(shí)例化bean的四種方式詳解

    Spring實(shí)例化bean的四種方式詳解

    這篇文章主要給大家介紹了關(guān)于Spring中實(shí)例化bean的四種方式:構(gòu)造方法、靜態(tài)工廠、實(shí)例工廠和FactoryBean,感興趣的可以了解一下
    2022-06-06
  • Java ShardingJDBC實(shí)戰(zhàn)演練

    Java ShardingJDBC實(shí)戰(zhàn)演練

    Sharding-JDBC 采用在 JDBC 協(xié)議層擴(kuò)展分庫分表,是一個(gè)以 jar 形式提供服務(wù)的輕量級(jí)組件,其核心思路是小而美地完成最核心的事情
    2021-11-11
  • 排查Java進(jìn)程內(nèi)存占比過高的方法

    排查Java進(jìn)程內(nèi)存占比過高的方法

    某天下午運(yùn)維反應(yīng)集成環(huán)境的一個(gè)Java服務(wù)內(nèi)存飆高,內(nèi)存耗的太高了,會(huì)疑似內(nèi)存泄漏,所以本文記一次排查Java進(jìn)程內(nèi)存占比過高的解決方法,需要的朋友可以參考下
    2023-10-10

最新評(píng)論