隨筆-128  評(píng)論-55  文章-5  trackbacks-0

          2.6 四種XML解析技術(shù)的特性比較

          根據(jù)以上對(duì)四種XML解析技術(shù)的介紹和分析,對(duì)其特性進(jìn)行總結(jié)和比較,如下表所示:

          1 XML解析技術(shù)特性比較


          3  XML
          解析技術(shù)的選取

          通過上述對(duì)四種XML解析技術(shù)的分析,可以大致看出XML解析技術(shù)的發(fā)展歷程,在不同的時(shí)期,針對(duì)不同的應(yīng)用需求,產(chǎn)生了不同的解析技術(shù)。這些解析技術(shù)具有各自的優(yōu)缺點(diǎn),在應(yīng)用中,如何選擇正確的解析技術(shù),往往成為提高應(yīng)用系統(tǒng)整體性能和效率的關(guān)鍵。

          3.1 面向文檔與面向應(yīng)用的解析方式的選取

          上述的四種解析技術(shù)又可分為兩類:面向文檔的和面向應(yīng)用的。如果應(yīng)用程序只是將XML文檔作為數(shù)據(jù)交換的媒介,關(guān)心文檔中包含的數(shù)據(jù)勝于關(guān)心文檔的XML結(jié)構(gòu),那么選擇面向應(yīng)用的解析方式將能夠在數(shù)據(jù)獲取上得到很大的簡(jiǎn)化,雖然在效率上有點(diǎn)損失,但相對(duì)于整個(gè)應(yīng)用系統(tǒng)的模塊化設(shè)計(jì)是值得的。

          相反,如果應(yīng)用程序真正關(guān)心文檔結(jié)構(gòu)的細(xì)節(jié),如編寫一個(gè)XML文檔編輯器,又或應(yīng)用程序正在處理的XML文檔不遵守固定的結(jié)構(gòu),那么選擇面向文檔的解析方式不僅能夠提高效率,還可以降低編程的復(fù)雜性。

          3.2 面向文檔的解析方式的選取

          在面向文檔的三種解析方式中,流式解析和對(duì)象式解析是出現(xiàn)較早的兩種解析方式,提供了不同層面上的解析抽象。

          流式解析是一種低級(jí)的解析方式,它能夠提供比對(duì)象式解析更多的控制,并且效率更高。然而,由于流式解析沒有對(duì)文檔結(jié)構(gòu)進(jìn)行建模,使得很難對(duì)文檔進(jìn)行搜索、修改、添加和刪除等操作,而且也無法進(jìn)行隨機(jī)訪問。因此如果應(yīng)用程序僅僅想高效率的獲得XML文檔中的某部分?jǐn)?shù)據(jù),并且希望對(duì)解析過程進(jìn)行更多的控制,而不需要對(duì)文檔進(jìn)行添加和修改,那么選取流式解析更能滿足需求。在流式解析中,StAX技術(shù)使得應(yīng)用程序能夠更方便的控制解析過程,并且其作為Java的官方規(guī)范,得到了更廣泛的應(yīng)用。

          對(duì)象式解析作為一種高級(jí)的解析方式,它的重點(diǎn)在于對(duì)文檔結(jié)構(gòu)進(jìn)行建模,而完全不關(guān)心文檔的解析過程(對(duì)象式解析往往建立在流式解析的基礎(chǔ)上,在流式解析的過程中逐步建立模型)。而一旦在內(nèi)存中建立了文檔的樹形結(jié)構(gòu)模型,那么就可以方便的通過模型對(duì)文檔進(jìn)行搜索,修改、添加和刪除等操作,并且更適合于面向?qū)ο蟮木幊獭H欢?,這種便利性是以內(nèi)存和效率為代價(jià)的,因此,如果應(yīng)用程序需要頻繁的對(duì)XML文檔中的數(shù)據(jù)進(jìn)行檢索和修改,而對(duì)內(nèi)存和效率沒有過多要求,那么對(duì)象式解析將是一種很好的選擇。

          而指針式解析的提出是以提高效率,減少內(nèi)存消耗為主要目的,可看作是介于流式解析和對(duì)象式解析之間的一種解析方式。它巧妙的設(shè)計(jì)方式使得不需要對(duì)文檔建立樹形模型,就可以實(shí)現(xiàn)搜索,修改、添加和刪除等操作,同時(shí)向應(yīng)用程序屏蔽了底層的解析過程,編程更加簡(jiǎn)便。因此,當(dāng)應(yīng)用程序不關(guān)心解析過程,而對(duì)性能有較高要求時(shí),可以選擇使用指針式解析。

          3.2.1 面向文檔解析方式的性能比較

          根據(jù)VTD-XML的官方網(wǎng)站的數(shù)據(jù)[11]VTD-XML的解析速度是DOM5x-10x,是SAX(with NULL content handler)1.5x - 2.0xWith NULL content handler 意味著SAX解析中沒有插入任何額外的處理邏輯,也就是SAX的最高速度)。VTD-XML的內(nèi)存占用僅為原XML1.3x-1.5x(其中1.0x部分是原XML),而DOM的內(nèi)存占用則是原XML4x-8x,對(duì)于一些大型的XML文檔,使用DOM方式處理往往會(huì)出現(xiàn)內(nèi)存溢出的錯(cuò)誤。

          以下是SAXDOMVTD-XML三種XML解析方式的性能測(cè)試結(jié)果[10],如下表所示:


          2 SAXDOMVTD-XML性能比較

          4、結(jié)論

          隨著XML的廣泛應(yīng)用,XML解析技術(shù)作為XML文檔處理過程中關(guān)鍵的一環(huán),對(duì)應(yīng)用系統(tǒng)的整體性能有著重要影響。本文通過分析和比較4種主流XML解析技術(shù)的優(yōu)缺點(diǎn),使得開發(fā)人員能夠針對(duì)具體的應(yīng)用需求選擇最為合適的解析技術(shù)。此外,對(duì)XML解析技術(shù)的深入研究對(duì)于促進(jìn)XML的應(yīng)用也有著積極的作用。


          參考文獻(xiàn):

          [1]     Frank P.Coyle著,袁勤勇,莫青 等譯. XML、Web服務(wù)和數(shù)據(jù)革命[M]. 北京:清華大學(xué)出版社,2003

          [2]     魚雷. VTD-XML解析技術(shù)研究[碩士學(xué)位論文]. 西安: 西安電子科技大學(xué), 2007

          [3]     Benoit Marchal. Working XML: Understand the various approaches to XML parsing [EB/OL]. http://www.ibm.com/developerworks/xml/library/x-wxxm38.html . 2007

          [4]     Benoit Marchal.  SAX, the power API [EB/OL]. http://www.ibm.com/developerworks/library/x-saxapi/ index.html . 2001

          [5]     Peter Nehrer. StAX'ing up XML, Part 1: An introduction to Streaming API for XML (StAX) [EB/OL]. http://www.ibm.com/developerworks/xml/library/x-stax1.html . 2006

          [6]     Dennis Sosnoski. XML and Java technologies: Java document model usage [EB/OL]. http://www.ibm.com /developerworks/library/x-injava2/index.html. 2002

          [7]     Dennis M. Sosnoski. XML Data Binding with Castor [EB/OL]. http://www.ibm.com/developerworks/cn/java /j-x-bindcastor /. 2002

          [8]     Dennis Sosnoski. XML and Java technologies: Data binding [EB/OL]. http://www.ibm.com/developerworks /library/x-databdopt /index.html. 2003

          [9]     Brett McLaughlin. Practical data binding: Get your feet wet in the real world [EB/OL]. http://www.ibm.com /developerworks/library/x-pracdb1.html. 2004

          [10]  Jimmy Zhang. A Step in the Right Direction VTD-XML Improves XML Processing [EB/OL]. http://www.devx.com/xml/Article/30484. 2006

          [11]  Project Homepage of VTD-XML. http://vtd-xml.sourceforge.net/



          Author: orangelizq
          email: orangelizq@163.com

          歡迎大家訪問我的個(gè)人網(wǎng)站 萌萌的IT人
          posted on 2009-07-19 15:30 桔子汁 閱讀(1772) 評(píng)論(0)  編輯  收藏 所屬分類: Web Service
          主站蜘蛛池模板: 五大连池市| 黎城县| 西安市| 客服| 永善县| 腾冲县| 依安县| 柘城县| 加查县| 修武县| 横峰县| 拉萨市| 炎陵县| 武山县| 萝北县| 灯塔市| 嘉鱼县| 尼玛县| 云梦县| 杂多县| 辰溪县| 垣曲县| 涞水县| 新宾| 高尔夫| 江川县| 开平市| 彰化县| 炉霍县| 明水县| 无棣县| 永和县| 南投县| 永吉县| 逊克县| 海淀区| 依安县| 新田县| 安陆市| 安塞县| 辉南县|