<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-128  評論-55  文章-5  trackbacks-0

    2.6 四種XML解析技術的特性比較

    根據以上對四種XML解析技術的介紹和分析,對其特性進行總結和比較,如下表所示:

    1 XML解析技術特性比較


    3  XML
    解析技術的選取

    通過上述對四種XML解析技術的分析,可以大致看出XML解析技術的發展歷程,在不同的時期,針對不同的應用需求,產生了不同的解析技術。這些解析技術具有各自的優缺點,在應用中,如何選擇正確的解析技術,往往成為提高應用系統整體性能和效率的關鍵。

    3.1 面向文檔與面向應用的解析方式的選取

    上述的四種解析技術又可分為兩類:面向文檔的和面向應用的。如果應用程序只是將XML文檔作為數據交換的媒介,關心文檔中包含的數據勝于關心文檔的XML結構,那么選擇面向應用的解析方式將能夠在數據獲取上得到很大的簡化,雖然在效率上有點損失,但相對于整個應用系統的模塊化設計是值得的。

    相反,如果應用程序真正關心文檔結構的細節,如編寫一個XML文檔編輯器,又或應用程序正在處理的XML文檔不遵守固定的結構,那么選擇面向文檔的解析方式不僅能夠提高效率,還可以降低編程的復雜性。

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

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

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

    對象式解析作為一種高級的解析方式,它的重點在于對文檔結構進行建模,而完全不關心文檔的解析過程(對象式解析往往建立在流式解析的基礎上,在流式解析的過程中逐步建立模型)。而一旦在內存中建立了文檔的樹形結構模型,那么就可以方便的通過模型對文檔進行搜索,修改、添加和刪除等操作,并且更適合于面向對象的編程。然而,這種便利性是以內存和效率為代價的,因此,如果應用程序需要頻繁的對XML文檔中的數據進行檢索和修改,而對內存和效率沒有過多要求,那么對象式解析將是一種很好的選擇。

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

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

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

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


    2 SAXDOMVTD-XML性能比較

    4、結論

    隨著XML的廣泛應用,XML解析技術作為XML文檔處理過程中關鍵的一環,對應用系統的整體性能有著重要影響。本文通過分析和比較4種主流XML解析技術的優缺點,使得開發人員能夠針對具體的應用需求選擇最為合適的解析技術。此外,對XML解析技術的深入研究對于促進XML的應用也有著積極的作用。


    參考文獻:

    [1]     Frank P.Coyle著,袁勤勇,莫青 等譯. XMLWeb服務和數據革命[M]. 北京:清華大學出版社,2003

    [2]     魚雷. VTD-XML解析技術研究[碩士學位論文]. 西安: 西安電子科技大學, 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

    歡迎大家訪問我的個人網站 萌萌的IT人
    posted on 2009-07-19 15:30 桔子汁 閱讀(1767) 評論(0)  編輯  收藏 所屬分類: Web Service
    主站蜘蛛池模板: 亚洲综合精品第一页| 久久精品国产亚洲AV无码娇色| 亚洲av永久无码精品天堂久久 | 色费女人18女人毛片免费视频| 日韩成人在线免费视频 | 黄色大片免费网站| 精品国产人成亚洲区| 精品免费久久久久国产一区| 中文字幕一精品亚洲无线一区| 两性色午夜视频免费播放| 亚洲av伊人久久综合密臀性色 | 最近免费视频中文字幕大全| 2022年亚洲午夜一区二区福利 | 精品日韩亚洲AV无码一区二区三区| 最近最新高清免费中文字幕| 亚洲一区二区三区免费观看 | 成人免费视频小说| 在线观看亚洲免费| 久久久久无码专区亚洲av | 老司机精品视频免费| 国产亚洲情侣一区二区无码AV| 国产精品免费观看调教网| 亚洲人成www在线播放| 亚洲成av人片在线观看天堂无码| 叮咚影视在线观看免费完整版| 亚洲色av性色在线观无码| 成年女人18级毛片毛片免费 | 亚洲日韩乱码中文字幕| 亚洲成人国产精品| 日韩免费观看一区| 亚洲国产精品18久久久久久| 亚洲精品中文字幕乱码三区| 国产无人区码卡二卡三卡免费 | 成人毛片免费在线观看| 一区二区视频免费观看| 337p欧洲亚洲大胆艺术| 亚洲国产精品综合久久一线| 很黄很黄的网站免费的| 成年大片免费视频播放一级| 亚洲美免无码中文字幕在线| 亚洲av无码乱码在线观看野外|