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

首頁 > 學院 > 開發設計 > 正文

JDOM / XPATH 編程入門引導攻略

2019-11-18 12:53:05
字體:
來源:轉載
供稿:網友

  前言
  xml是一種優秀的數據打包和數據交換的形式,在當今XML大行于天下,假如沒有聽說過它的大名,那可真是孤陋寡聞了。用XML描述數據的優勢顯而易見,它具有結構簡單,便于人和機器閱讀的雙重功效,并彌補了關系型數據對客觀世界中真實數據描述能力的不足。W3C組織根據技術領域的需要,制定出了XML的格式規范,并相應的建立了描述模型,簡稱DOM。各種流行的程序設計語言都紛紛根據這一模型推出了自己的XML解析器,在java世界里,APACHE組織開發的XERCES應該是流行最廣功能最為強大的XML解析器之一。但是由于W3C在設計DOM模型時,并不是針對某一種語言而設計,因此為了通用性,加入了許多繁瑣而不必要的細節 ,使JAVA程序員在開發XML的應用程序過程中感到不甚方便,因此JDOM作為一種新型的XML解析器橫空出世,它不遵循DOM模型,建立了自己獨立的一套JDOM模型(注重JDOM決不是DOM擴展,雖然名字差不多,但兩者是平行的關系),并提供功能強大使用方便的類庫,使JAVA程序員可以更為高效的開發自己的XML應用程序,并極大的減少了代碼量,因此它很快得到了業內的認可,如JBUILDER這樣的航空母艦級的重磅產品都以JDOM為XML解析引擎,足見其名不虛傳。
  
  有了XML數據的描述標準,人們自然就會想到應該有一種查詢語言可以在XML中查找任意節點的數據,就像SQL語句可以在關系性數據庫中執行查詢操作一樣,于是XQUERY和XPATH順應潮流,應運而生。由于XQUERY較為復雜,使用不甚方便,XPATH漸漸成為主流,我們只需對XPATH進行學習,便可以應付所有的查詢要求。在JDOM發布的最新的V1.0bata10版中,已經加入了對XPATH的支持,這無疑是令開發者十分激動的。
  
  學會JDOM和XPATH,你便不再是XML的入門者,在未來的開發生涯中,就像特種兵的多用匕首,為你披荊斬棘,助你勇往直前。閑言少敘,學習還要腳踏實地,從頭開始。
  
  XPATH速成篇
  XPATH遵循文檔對象模型(DOM)的路徑格式,由于每個XML文檔都可以看成是一棵擁有許多結點的樹,每個結點可以是以下七個類型之一:根(root)、元素(element)、屬性(attribute)、正文(text)、命名空間(namespace)、處理指令(PRocessing instrUCtion)和注釋(comment)。XPATH的基本語法由表達式構成。在計算表達式的值之后產生一個對象,這種對象有以下四種基本類型:節點集合、布爾型、數字型和字符串型 。XPATH基本上和在文件系統中尋找文件類似,假如路徑是以"/"開頭的,就表明該路徑表示的是一個絕對路徑,這和在UNIX系統中關于文件路徑的定義是一致的。以"http://"開頭則表示在文檔中的任意位置查找。
  
  不談泛泛的理論,學習XPATH還要從實例學起最為快捷,并有助于你舉一反三。
  
  下面的樣例XML文檔,描述了某臺電腦中硬盤的基本信息(根節點< HD>代表硬盤,< disk>標簽代表硬盤分區,從它的name屬性可以看出有兩個盤符名稱為"C"和"D"的分區;每個分區下都包含< capacity>,< Directories>< files>三個節點,分別代表了分區的空間大小、目錄數量、所含文件個數):
  
  < ?xml version="1.0" encoding="UTF-8"?>
  < HD>
   < disk name="C">
   < capacity>8G< /capacity>
   < directories>200< /directories>
   < files>1580< /files>
   < /disk>
   < disk name="D">
   < capacity>10G< /capacity>
   < directories>500< /directories>
   < files>3000< /files>
   < /disk>
  < /HD>
  
  你在XML文檔中使用位置路徑表達式來查找信息,這些表達式有很多種組成方式。
  
  結點元素的查找是你將要碰到的最頻繁的查找方式。在上面這個XML文檔例子中,根HD包含disk結點。你可以使用路徑來查找這些結點,用正斜杠(/)來分隔子結點,返回所有與模式相匹配的元素。下面的XPATH 語句返回所有的disk元素:
  
  /HD/disk
  
  "*"代表"全部"的意思。/HD/* 代表HD下的全部節點。
  
  下面的XPATH將返回任意節點下的名稱為disk的全部節點:
  
  //disk
  
  下面的XPATH將返回名稱為disk,name屬性為'C'的全部節點:
  
  /HD/disk[@name='C']
  
  節點的附加元素,比如屬性,函數等都要用方括號擴起來,屬性前面要加上@號
  
  下面的XPATH將返回文件個數為1580的files節點:
  
  /HD/disk/files[text()='1580']
  
  大家注重到上面包含一個text(),這就是XPATH的一個函數,它的功能是取出當前節點的文本。
  
  下面的XPATH將返回文件個數為1580的分區:
  
  /HD/disk/files[text()='1580']/parent::*
  
  最后的parent::*表示這個元素的所有的父節點的集合。
  
  XPATH中一些有用的函數:
  
JDOM / XPATH 編程入門引導攻略

  XPATH具有豐富的表達功能,上面這些已經基本夠用,在你做項目中就會發現根據實際情況有許多查詢需求,你應該參考本文最后提供的W3C發布的關于XAPH的官方資料進行查閱,我在這里只起一個拋磚引玉的作用,在下面的章節中,我們的應用范例將不會超出上面提到的這些內容,假如你對XPATH感愛好,應該在讀完本文后,查找相關資料和書籍進行深入學習。
  
  JDOM修煉篇
  用過XERCES的程序員都會感到,有時候用一句話就可以說清楚的事,當用XERCES的API來實現時,要三四行程序。
  
  獲得并安裝JDOM
  在http://www.jdom.org/ 可以下載JDOM的最新版本,將壓縮包中的jdom.jar及lib目錄下的全部jar包加入到classpath就可以了。
  
  用JDOM解析XML
  JDOM模型的全部類都在org.jdom.*這個包里,org.jdom.input.*這個包里包含了JDOM的解析器,其中的DOMBuilder的功能是將DOM模型的Document解析成JDOM模型的Document;SAXBuilder的功能是從文件或流中解析出符合JDOM模型的XML樹。由于我們的上面提到的XML樣例存儲在一個名稱為sample.xml的文件中,很顯然我們應該采用后者作為解析工具。下面程序演示了jdom的基本功能,即解析一個xml文檔,并挑選一些內容輸出到屏幕上。
  
  import java.util.*;
  import org.jdom.*;
  import org.jdom.input.SAXBuilder;
  public class Sample1 {
   public static void main(String[] args) throws Exception{
   SAXBuilder sb=new SAXBuilder();
   Document doc=sb.build("sample.xml");
   Element root=doc.getRootElement();
   List list=root.getChildren("disk");
   for(int i=0;i< list.size();i++){
   Element element=(Element)list.get(i);
   String name=element.getAttributeValue("name");
   String capacity=element.getChildText("capacity");
   String directories=element.getChildText("directories");
   String files=element.getChildText("files");
   System.out.println("磁盤信息:");
   System.out.println("分區盤符:"+name);
   System.out.println("分區容量:"+capacity);
   System.out.println("目錄數:"+directories);
   System.out.println("文件數:"+files);
   System.out.println("-----------------------------------");
   } 
   }
  }
  
  程序的輸出結果:
  
  磁盤信息:
  
  分區盤符:C
  
  分區容量:8G
  
  目錄數:200
  
  文件數:1580
  -----------------------------------
  磁盤信息:
  
  分區盤符:D
  
  分區容量:10G
  
  目錄數:500
  
  文件數:3000
  -----------------------------------
  這段程序采用了傳統的解析方式,一級一級的從根節點到子節點逐個采集我們所需要的數據,中規中矩。試想假如這個樹足夠深,我們想取第5 0層第三個節點的數據(夸張了點,呵呵),那將是一場噩夢!下面的內容將輕松化解你的這一痛苦。
  
  JDOM+XPATH進階篇
  說了那么多JDOM和XPATH的好處,終于到了英雄有用武之地的時候了。
  
  JDOM的關于XPATH的api在org.jdom.xpath這個包里??纯催@個包下,只有一個類,JDOM就是如此簡潔,什么事都不故弄玄虛的搞得那么復雜。這個類中的核心的api主要是兩個selectNodes()和selectSingleNode()。前者根據一個xpath語句返回一組節點;后者根據一個xpath語句返回符合條件的第一個節點。
  
  下面的程序我們用JDOM+XPATH實現了上一個程序同樣的功能,你可以從中學到不少運用XPATH 的知識:
  
  import java.util.*;
  import org.jdom.*;
  import org.jdom.input.SAXBuilder;
  import org.jdom.xpath.XPath;
  public class Sample2 { 
   public static void main(String[] args) throws Exception {
   SAXBuilder sb = new SAXBuilder();
   Document doc = sb.build("sample.xml");
   Element root = doc.getRootElement();
   List list = XPath.selectNodes(root, "/HD/disk");
   for (int i = 0; i > list.size(); i++) {
   Element disk_element = (Element) list.get(i);
   String name = disk_element.getAttributeValue("name");
   String capacity = ( (Text) XPath.selectSingleNode(disk_ele

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品少妇网址| 在线视频欧美性高潮| 日韩视频一区在线| 68精品国产免费久久久久久婷婷| 久久久久久伊人| 久久国产精品视频| 亚洲最大福利视频| 亚洲精品日韩激情在线电影| 美日韩精品免费观看视频| 欧美激情亚洲精品| 久久久久久香蕉网| 欧美精品www在线观看| 国产专区欧美专区| 国产成人免费91av在线| 国产最新精品视频| 欧美裸体男粗大视频在线观看| 国产一区二区三区在线观看视频| 91色p视频在线| 亚洲欧美国产另类| 欧美激情综合亚洲一二区| 国产原创欧美精品| 亚洲美女av黄| 亚洲人线精品午夜| 尤物精品国产第一福利三区| **欧美日韩vr在线| 18性欧美xxxⅹ性满足| 日韩精品中文在线观看| 欧美成人精品xxx| 激情久久av一区av二区av三区| 久久久精品一区二区三区| 亚洲精品国产精品国自产观看浪潮| 成人av资源在线播放| 欧美精品久久久久久久| 欧美极品美女视频网站在线观看免费| 中文字幕在线看视频国产欧美在线看完整| 亚洲第一免费播放区| 日韩国产高清视频在线| 欧美另类精品xxxx孕妇| 国产精品精品国产| 亚洲美女av黄| 欧美中文字幕在线播放| 成人xvideos免费视频| 777精品视频| 91成人精品网站| 日韩a**站在线观看| 96国产粉嫩美女| 欧美一级大片在线观看| 91久久久亚洲精品| 精品国产电影一区| 久久伊人精品视频| 日韩精品黄色网| 国产亚洲视频在线| 欧美精品在线视频观看| 亚洲精品456在线播放狼人| 久久久久久网站| 最新国产精品亚洲| 色噜噜亚洲精品中文字幕| 国产精品久久久久久久久久久久| 欧美性xxxxhd| 97精品视频在线观看| 欧美高清视频在线观看| 欧美激情一区二区久久久| 精品成人久久av| 国产精品美女视频网站| 国产成人jvid在线播放| 欧美乱大交xxxxx另类电影| 国产视频精品一区二区三区| 色哟哟入口国产精品| 亚洲欧洲中文天堂| 亚洲高清色综合| 色噜噜久久综合伊人一本| 欧美肥婆姓交大片| 久久久精品一区二区| 亚洲国产精品中文| 日本午夜精品理论片a级appf发布| 精品福利一区二区| 国产精品久久久999| 日本一区二区三区在线播放| 久久视频在线看| 日韩精品欧美激情| 亚洲国产成人久久| 精品视频在线观看日韩| 亚洲精品欧美极品| 国产激情综合五月久久| 国产这里只有精品| 亲子乱一区二区三区电影| 国产亚洲精品一区二区| 欧美中在线观看| 91av在线播放视频| 国产欧美日韩中文| 午夜精品一区二区三区在线视频| 日韩精品中文字幕久久臀| 亚洲欧美另类中文字幕| 国产精品久久久久久一区二区| 91av在线影院| 精品国产一区二区三区久久| 亚洲国产日韩欧美综合久久| 国产精品丝袜一区二区三区| 国产欧美va欧美va香蕉在线| 欧美国产视频日韩| 日韩精品在线电影| 欧美大片在线看免费观看| 欧美午夜性色大片在线观看| 国产97人人超碰caoprom| 亚洲国产天堂网精品网站| 欧美另类第一页| 欧美日韩亚洲网| 一区二区日韩精品| 国产精品第一页在线| 亚洲欧美日韩一区二区在线| 国产综合视频在线观看| 97视频在线播放| 日韩二区三区在线| 欧洲精品在线视频| 欧美一级免费看| 国产成人久久精品| 国产成人精品一区| 久久国产精品首页| 免费91麻豆精品国产自产在线观看| 久久中国妇女中文字幕| 国产在线观看91精品一区| 精品亚洲国产成av人片传媒| 欧美激情综合亚洲一二区| 欧美做爰性生交视频| 亚洲成色999久久网站| 日韩av在线资源| 最近2019中文字幕一页二页| 久久激情视频免费观看| **欧美日韩vr在线| 一本大道香蕉久在线播放29| 国产aⅴ夜夜欢一区二区三区| 久久五月情影视| 久久91亚洲精品中文字幕奶水| 欧美日韩在线观看视频| 精品人伦一区二区三区蜜桃网站| 久久影视电视剧免费网站| 欧美性xxxx极品hd满灌| 国产在线不卡精品| 国产精品99免视看9| 欧美电影免费观看| 91色视频在线导航| 日本精品久久电影| 亚洲激情第一页| 国产精品久久久久久久久久ktv| 综合久久五月天| 精品久久久久久久久久久久| 在线亚洲国产精品网| 久久久久久亚洲精品| 伊人一区二区三区久久精品| 91精品啪aⅴ在线观看国产| 中文字幕在线观看亚洲| 国产精品女人网站| 亚洲免费中文字幕| 亚洲黄色在线看| 欧美亚洲成人免费| 成人黄色av播放免费| 亚洲一区亚洲二区亚洲三区| 久久精品视频在线| 色www亚洲国产张柏芝| 亚洲欧美视频在线| 成人网在线免费观看| 97av在线视频免费播放| 2024亚洲男人天堂| 国产日韩欧美自拍|