摘要:隨著XML的廣泛應用,大量的信息都將通過XML文檔來進行存儲、交換,因此xML解析技術成為XML應用的關鍵。本文通過對4種解析技術進行分析和總結,同時本文也介紹了XML解析技術的實現細節,總結歸納了在應用系統中選擇合適的XML解析技術的方法,加深理解實現選擇解析技術的原則。
關鍵詞:XML文檔
解析
中圖分類號:TP312
文獻標識碼:A
文章編號:1002-2422(2010)03-0132-02
XML(Extensible Markup Language。可擴展標記語言)與HTML一樣,都是標準通用語言。是W3C制定的一組規范,用來定義文檔標記語言的框架,同時作為一種便捷的數據操作和數據傳輸的工具,提供了一種描述結構數據的格式,XML以簡單性、開放性、可擴展性、互操作性等一系列特性給基于Web的應用程序帶來了強大的功能和靈活性,因此在現今的Web開發中發揮著越來越重要的作用,使得針對XML文檔的操作也越來越頻繁。XML也為三層B/S/S應用程序開發提供了所需的技術,使本地化計算和操作成為可能。其另一特性是粒狀更新,從而改善了服務器的可縮放性。
由于XML技術的方便性和高效性,一些用于處理XML文檔的解析技術應運而生。作為XML應用的基礎,XML解析技術一直是XML領域的研究熱點。所謂XML文檔的解析就是把代表XML文檔的一個無結構的字符序列轉換為滿足XML語法的結構化組件的過程。在提高解析性能、降低資源占用、改善XML解析器的可用性上,人們做了大量的研究和實踐工作。但是,驗證過程降低了解析器的性能。如何兼顧錯誤檢測能力和性能,已成為XML解析的挑戰。目前主要有四種對XML數據進行解析的技術:(1)DOM(Document Ob-iect Model,文檔對象模型);(2)SAX(Simple API for XML,用于XML的簡單API);(3)JDOM(開源項目,直接為java編程服務);(4)JAXP(Java APIfor XML Processing)。本文將對這四種常用的XML解析技術進行簡要介紹。同時本文也總結歸納了在應用系統中選擇合適的XML解析技術的方法。
1 XML的解析技術
1,1 DOM解析技術
DOM(Document Object Model)是W3C發展的瀏覽XML文檔的一種標準API,用與平臺和語言無關的方式表示XML文檔的標準,是一種基于樹型的解析技術,將XML文檔一次性解析。生成一個位于內存中的對象樹用以描述該文檔。也是以層次結構組織的節點或信息片斷的集合,允許開發人員在XML樹中尋找特定信息,通過加載整個文檔和構造層次結構分析該結構,從而做任何工作。
100M定義了以下一系列的對象和方法對DOM樹的節點進行各種隨機操作:
(1)Document對象:作為樹的最高節點,Document對象是對整個文檔進行操作的入口。
(2)Elemem和Attr對象:這些節點對象都是文檔某一部分的映射,節點的定級層次恰好反映了文檔的結構。
(3)Text對象:作為Element和Attr對象的子節點,Text對象表達了元素或屬性的文本內容。Text節點不再包含任何子節點。
(4)集合索引:DOM提供了幾種集合索引方式,可以對節點按指定方式進行遍歷。索引參數都是從0開始記數的。
1,2 SAX解析技術
SAX(Simple API For XML)是一個基于事件的XML文檔解析標準,是采用“推”模式的解析模型,作為工業界的事實規范應用相當廣泛。解析XML文檔內容,就不得不對XSL(ExtensibleStylesheet Language)進行分析處理,因為XSL是XML的樣式表語言,定義了XML的語法規范。另外,SAX以序列的形式處理文檔,不需要在內存中建立整個文檔的樹結構,因此SAX對內存的要求通常會比較低,因為它讓開發人員自己來決定所要處理的tag。特別是當開發人員只需要處理文檔中所包含的部分數據時,SAX這種擴展能力得到了更好的體現,與DOM相比。其可認為其是一個輕量級的接口集合。但是其不是持久的,事件過后,若沒保存數據,那么數據就丟了。
1,3 JDOM解析技術
JDOM的目的是成為Java特定文檔模型,它簡化了與XML的交互,從而減少DOM、SAX的編碼量,極大減少了代碼量。DOM適合于當今流行的各種語言。包括Java,JavaSeripte,VB,VBSeript,PeH,C,C++等,它也為HTML和XML文檔提供了一個可應用于不同平臺的編程接口。JDOM的另一個特點是它被設計成一個可以在小內存上快速執行的輕量級API,它不要求把整個xML文件放人內存,而只是在需要時把信息裝人內存,從而減少了系統資源開銷。但是使用JDOM的時候,需要一定的前提條件,即須要有SAX、DOM解析器的類文件。
JDOM類庫
在使用JDOM時要下載JDOM類庫,將其加載到JDK中。JDOM類庫是由以下幾個包組成:
(1)org.jdom包含了所有的xml文檔要素的java類。
(2)org.jdom.adapters包含了與dem適配的java類。
(3)org.jdom.filter包含了xml文檔的過濾器類。
(4)orgdidom.input包中提供的構造類從任何數據源中構造文檔。
(5)org.jdom.output包含了讀取xml文檔的類。
(6)org.jdom.transform包含了將jdom xml文檔接口轉換為其他xml文檔接口。
(7)org.jdom.xpath包含了對xmi文檔xpath操作的類。
1,4 JAXP解析技術
JAXP是Java API for XML Processing的縮寫,是一種專門提供XML文檔解析的Java接口。JAXP API主要的部分在iavax,xml.parsers這個包中。在這個包中,向用戶提供了兩個最重要的工廠類,SAXParserFactory和Document-BuilderFactory,相應地,提供了SAXParser和Document-Builder兩個類。
2結束語
通過對以上四種XML解析結束的分析和比較,可以總結出在選擇XML解析技術的選擇依據。
當應用程序解析了文檔還需多次訪問這些數據,可以優先考慮DOM解析;當應用程序需要簡單的只讀數據流并且希望一個體現成熟標準的強健的實施技術時,可以優先考慮SAX解析;當要應用程序實現的功能簡單,如解析、創建等,JDOM是一種最佳選擇;當代碼與各種解析器的實現細節隔離。一般建議使用JAPX。