劉寧
摘要:XML文件是一種日趨流行的可擴展標記語言,目前在進行應用程序布署或項目配置,以及數據交換等方面具有重要意義的一種文件格式,具備強大的通用性。本文首先對XML文件進行簡單介紹,然后分析了XML文件的格式,對當前流行的幾種使用Java語言對XML文件的訪問方式進行了說明,并著重介紹使用JDOM以及使用JDOM對XML文件的進行讀寫訪問,示例簡單,以方便讀者掌握。
關鍵詞:Java XML JDOM
中圖分類號:TP31 文獻標識碼:A 文章編號:1007-9416(2016)08-0243-01
1 XML簡介
1998年2月,W3C組織發(fā)布了XML1.0規(guī)范,目的是用來簡化在Internet中的文檔信息傳輸,XML全稱Extensible Markup Language—可擴展的標記語言。自誕生之初,便因為其語法簡單、描述直接、搜索準確、易于傳輸等特點,很快便成為數據交換的公共語言。
XML文件是純文本文件,可以使用各類文本編輯器進行創(chuàng)建或編輯。XML文檔總體上包含兩個部分,序言(Prolog)和文檔元素(Documents Elements)。
在XML中,通常采用了如下的語法:
任何的起始標簽都必須有一個結束標簽。
可以采用另一種簡化語法,可以在一個標簽中同時表示起始和結束標簽。這種語法是在大于符號之前緊跟一個斜線(/)。
標簽必須按合適的順序進行嵌套,所以結束標簽必須按鏡像順序匹配起始標簽
所有的特性都必須有值。
所有的特性都必須在值的周圍加上雙引號。
其中第一行為XML文檔的聲明,其他如“學生”、“姓名”、“性別”等標簽稱為XML文檔的元素(Element),且必須是成對出現的、封閉的、各標簽之間沒有交叉。
2 Java訪問XML文檔的方法
2.1 DOM JAXP Crimson解析器
DOM方式是以層次結構組織的節(jié)點或信息片斷的集合。其優(yōu)點是允許應用程序對數據和結構做出更改以及文件的訪問是雙向的。
2.2 SAX
SAX方式不用等待所有的數據被處理分析而能夠立即開始執(zhí)行,訪問方式的效率和性能都比較高。其缺點是程序的復雜程度高,另外它是一種單向的訪問方式,且不支持XPath。
2.3 JDOM
JDOM使用的是具體的類而不是使用接口。這在某些方面簡化了API,但是也限制了靈活性。JDOM自身不包含解析器,一般使用SAX2解析器來解析和驗證XML文檔。
2.4 DOM4J
DOM4J大量使用了API中的Collections類,支持XPath并且有較好的性能。但大量接口的使用,以及API的復雜程序也相應增加。
3 JDOM簡介
JDOM簡化與XML的交互并且比使用DOM實現更快。JDOM通常使用SAX2解析器來解析和驗證輸入XML文檔。它包含一些轉換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。
4 JDOM編程
4.1 JDOM構成
(1)org.jdom XML文檔要素的Java類;
(2)org.jdom.adapters 與dom適配的Java類;
(4)org.jdom.filter XML文檔的過濾器類;
(5)org.jdom.input XML文檔的讀取類;
(6)org.jdom.output XML文檔的寫入類;
(7)org.jdom.transform 文檔轉換接口類;
(8)org.jodm.xpath XML文檔xpath操作類。
4.2 主要API
(1)SAXBuilder.builder(“*.xml”);獲取XML文件;
(2)Element.getChildren();獲取該節(jié)點的所有子節(jié)點;
(3)Element.getChild(“節(jié)點名”);獲取子節(jié)點實例;
(4)Element.getAttribute(“屬性名”);獲取該節(jié)點屬性值;
(5)Element.getText();獲取該節(jié)點的文本;
(6)Element.addContent(Element);添加子節(jié)點;
(7) Element.setAttribute(“屬性名”,”屬性值”);添加節(jié)點屬性;
(8)Element.setText(“文本值”);添加節(jié)點文本值。
讀取XML文件的基本示例:
SAXBuilder builder= new SAXBuilder();
Document doc=builder.build(url);
Element root=doc.getRootElement();
List list=root.getChildren();
For(i=0;i Element sNo=(Element)student.getChildren().get(0); Element sName=(Element)student.getChildren().get(1); Element sAge=(Element)student.getChildren().get(2); …… } 首先利用SAXBuilder.bulilder對象打開XML文件,然后利用getRootElement()方法讀取root的所有節(jié)點,并將其返回至一個集合列表,最后利用循環(huán)將列表中的所有子節(jié)點讀取出來,以達到讀取XML文件的目的??梢钥闯?,該示例結構簡單,使用方便,易于理解XML文件的結構以及內存中的DOM模型。 5 結語 XML文件已經成為項目配置的標準文件類型,廣泛的應用使得對XML文件的訪問成為了必須的因素。更高效地使用XML文件,更快速地搜索或布署XML文件,都要求進行編程對XML文件的讀寫,JDOM應該是一種相對簡單的方法,對象豐富,易于理解,容易掌握。