亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

dom4j從jar包中讀取xml文件的方法

2019-11-26 15:43:06
字體:
來源:轉載
供稿:網友

進行封裝的時候,我們常常需要用xml來定義一些規范,在單獨運行讀取的時候當然不會有問題,但這些xml是往往是放在jar包里的,這樣一來,這些東西就找不出來了。文中用到的xml定義如下:

復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<ACCESOS>
 <item>
  <SOCIO name="adsf">
   <NUMERO>00045050</NUMERO>
   <REPOSICION>0</REPOSICION>
   <NOMBRE>MOISES MORENO</NOMBRE>
   <TURNOS>
    <LU>T1</LU>
    <MA>T2</MA>
    <MI>T3</MI>
    <JU>T4</JU>
    <VI>T5</VI>
    <SA>T6</SA>
    <DO>T7</DO>
   </TURNOS>
  </SOCIO>
 </item>
 <item>
  <SOCIO name="adsfa">
   <NUMERO>00045051</NUMERO>
   <REPOSICION>0</REPOSICION>
   <NOMBRE>RUTH PENA</NOMBRE>
   <TURNOS>
    <LU>S1</LU>
    <MA>S2</MA>
    <MI>S3</MI>
    <JU>S4</JU>
    <VI>S5</VI>
    <SA>S6</SA>
    <DO>S7</DO>
   </TURNOS>
  </SOCIO>
 </item>
</ACCESOS>

下面來看代碼:

復制代碼 代碼如下:

public void read(){ 
    try { 
        Document doc = new SAXReader().read(new File("src/user.xml")); 
        List<Element> itemList =  doc.selectNodes("/ACCESOS/item/SOCIO"); 
        for (Iterator<Element> iter = itemList.iterator(); iter.hasNext();){ 
            Element element = iter.next(); 
            System.out.println("NUMERO =" + element.elementText("NUMERO")); 
        } 
    } catch (DocumentException e) { 
        e.printStackTrace(); 
    } 

這段代碼 寫在Java Project中,其中user.xml放在src根目錄下,類在src/com/jianxin/xml下,很顯然運行以上代碼是可以出來結果的,但如果把以上代碼打包,這個jar包內的目錄為
com/jianxin/xml
user.xml
而這里方法內還是去src下去找user.xml,就算把src/從路徑中去掉,仍然無法定位到jar中的user.xml上。
這主要是因為jar包是一個單獨的文件而非文件夾,絕對不能通過"file:/d:.../user.xml"這種形式來對文件定位,所以即使是相對路徑,也無法定位到jar文件內的文件。
那么把xml打入jar包,無論user.xml在哪個目錄下,jar包中的類都可以找到,這會是幻想嗎?
當然不是,我們可以用類裝載器(ClassLoader)來做到:
1)ClassLoader是類加載器的抽象類。它可以運行時動態的獲取加載類的運行信息??梢赃@樣說,當我們調用xml.jar中的ReadXML類時,JVM加載進ReadXML類,并記錄下ReadXML運行時信息(包括所在jar包的根路徑信息)。而ClassLoader類中的方法 可以幫助我們動態獲取這些信息:
a.public URL getResource(String),查找且有給定名稱的資源。
b.public InputStream getResourceAsStream(String name),返回指定資源輸入流
2)ClassLoader是abstract的,不可能實例化。我們真正寫代碼的時候,是通過Class類中的getResource和getResourceAsStream方法 ,這兩個方法會委托ClassLoader中的getResource和getResourceAsStream方法。現在對上面方法進行重寫:

復制代碼 代碼如下:

public void read(){
 try {
     InputStream is=this.getClass().getResourceAsStream("/user.xml");
     Document doc = new SAXReader().read(is);
  List<Element> itemList =  doc.selectNodes("/ACCESOS/item/SOCIO");
  for (Iterator<Element> iter = itemList.iterator(); iter.hasNext();){
   Element element = iter.next();
   System.out.println("NUMERO =" + element.elementText("NUMERO"));
  }
 } catch (DocumentException e) {
  e.printStackTrace();
 }
}

這樣,打包之前運行是沒有問題的,打成包后,依然是可以運行找到數據的~。
在這里我感覺最重要的就是獲取Class同時會獲取jar根目錄信息,同時ClassLoader也會有所改變,這點需要注意一下,至于到底是什么改變,目前我也說不上來,只是碰到了這樣的問題。所以計劃看一本Java比較底層的書,以讓自己在為別人封裝東西的時候更加得心就手,一直停留在應用層次的我們,也是時候深入了解一下JVM了。
最近大部分時間都是在開發,說好的jira可能會更晚些,做的過程中,做是用了一下dwr,下篇對其進行描述~~~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品色蜜蜜精品视频在线观看| 精品无人国产偷自产在线| 亚洲欧美中文字幕| 久久av中文字幕| 性色av一区二区三区在线观看| 尤物九九久久国产精品的特点| 亚洲精品www久久久久久广东| 亚洲尤物视频网| 成人免费淫片aa视频免费| 中文字幕久热精品视频在线| 91久久久亚洲精品| 久久69精品久久久久久国产越南| 久久精品国产一区二区三区| 久久久久久久久久国产精品| 欧美日韩激情视频8区| 一本大道香蕉久在线播放29| 亚洲人成网站777色婷婷| 播播国产欧美激情| 成人性生交大片免费看视频直播| 色偷偷91综合久久噜噜| 亚洲最大av网站| 亚洲人成啪啪网站| 97国产精品视频| 国产成人涩涩涩视频在线观看| 国产香蕉97碰碰久久人人| 国产精品主播视频| 色妞色视频一区二区三区四区| 精品视频久久久久久久| 欧美日韩高清在线观看| 91九色国产视频| 日韩av在线网址| 日韩美女视频中文字幕| 欧美一级视频免费在线观看| 日日噜噜噜夜夜爽亚洲精品| 影音先锋欧美精品| 国内精品一区二区三区| 成人国产精品av| 欧美激情第6页| 91国偷自产一区二区三区的观看方式| 青青久久av北条麻妃黑人| 亚洲国产精品va在线看黑人| 伊人av综合网| 亚洲欧洲日产国码av系列天堂| 日韩成人av网址| 中文字幕亚洲自拍| 91久久国产精品91久久性色| 久久不射电影网| 久久久亚洲国产天美传媒修理工| 亚洲电影免费观看高清完整版| 在线丨暗呦小u女国产精品| 日韩中文第一页| 91久久久在线| 国产精品扒开腿做爽爽爽男男| 国产精品私拍pans大尺度在线| 久久精品99久久香蕉国产色戒| 日韩欧美成人免费视频| 欧美激情一区二区三区成人| 亚洲欧美日韩国产中文| www.久久久久久.com| 国产精品视频区| 国产有码一区二区| 欧美日韩视频免费播放| 日本成人在线视频网址| 亚洲综合一区二区不卡| 亚洲男人天天操| 激情懂色av一区av二区av| 久久久久五月天| 国产精品444| 一本一道久久a久久精品逆3p| 亚洲性日韩精品一区二区| 日韩久久午夜影院| 国产成人亚洲综合91精品| 欧美成人免费小视频| 国产精品久久久久久久久粉嫩av| 亚洲男人7777| 中文日韩在线视频| 国产伊人精品在线| 在线视频精品一| 日韩成人在线播放| 91美女福利视频高清| 国产精品爱啪在线线免费观看| 亚洲一区二区三区久久| 欧美激情第一页xxx| 亚洲国产又黄又爽女人高潮的| 久久久久久九九九| 亚洲肉体裸体xxxx137| 国产精品电影网站| 一区二区三区视频在线| 国产一区二区三区在线播放免费观看| 国产精品一区二区三| 日韩av影视综合网| 51ⅴ精品国产91久久久久久| 亚洲第一网站免费视频| 亚洲欧美综合另类中字| 91丝袜美腿美女视频网站| 亚洲人永久免费| 青青久久av北条麻妃黑人| 亚洲色图在线观看| 亚洲欧美日韩国产中文专区| 亚洲大胆美女视频| 美女999久久久精品视频| 欧美福利视频在线| 亚洲国产精品va在线观看黑人| 在线视频亚洲欧美| 亚洲天堂av在线播放| 亚洲国产福利在线| 亚洲精品中文字幕女同| 欧美尤物巨大精品爽| 伊人伊人伊人久久| 这里只有精品视频| 日韩欧中文字幕| 亚洲精品国产综合久久| 日韩理论片久久| 欧美日韩另类字幕中文| 在线观看日韩www视频免费| 成人在线免费观看视视频| 久久影视电视剧免费网站| 欧美黑人一区二区三区| 欧美日韩中国免费专区在线看| 亚洲wwwav| 日韩精品在线观| 国产精品久久一| 日韩a**站在线观看| 欧美性猛交xxxx富婆弯腰| 亚洲香蕉成视频在线观看| 国产suv精品一区二区三区88区| 国产精品老女人视频| 日韩欧美国产高清91| 97精品久久久中文字幕免费| 精品丝袜一区二区三区| 久久久久成人精品| 精品视频在线播放色网色视频| 欧美视频免费在线| 精品国产一区二区三区四区在线观看| 日韩欧美在线视频免费观看| 美日韩精品视频免费看| 日韩av电影免费观看高清| 国产主播欧美精品| 国产一区二区在线免费| 日韩欧美在线视频日韩欧美在线视频| 欧美性xxxx极品高清hd直播| 色综合91久久精品中文字幕| 亚洲国产日韩欧美在线动漫| 欧美噜噜久久久xxx| 亚洲奶大毛多的老太婆| 欧美视频中文字幕在线| 亚洲第一视频网| 清纯唯美亚洲综合| 亚洲精品久久久久久久久久久久| 91精品国产九九九久久久亚洲| 欧美视频中文字幕在线| 激情懂色av一区av二区av| 亚洲精品中文字幕女同| 97精品国产91久久久久久| 亚洲精品自拍视频| 日韩电影免费观看在线观看| 亚洲美腿欧美激情另类| 亚洲丝袜av一区| 欧美黄色片视频| 亚洲电影免费观看高清完整版在线观看| 亚洲一区二区福利| 国产www精品| 欧美午夜性色大片在线观看| 色妞色视频一区二区三区四区|