隨筆-128  評論-55  文章-5  trackbacks-0
          SAX概念
          SAX是Simple API for XML的縮寫,它并不是由W3C官方所提出的標準,可以說是“民間”的事實標準。實際上,它是一種社區(qū)性質(zhì)的討論產(chǎn)物。雖然如此,在XML中對SAX的應用絲毫不比DOM少,幾乎所有的XML解析器都會支持它。

          與DOM比較而言,SAX是一種輕量型的方法。我們知道,在處理DOM的時候,我們需要讀入整個的XML文檔,然后在內(nèi)存中創(chuàng)建DOM樹,生成DOM樹上的每個Node對象。當文檔比較小的時候,這不會造成什么問題,但是一旦文檔大起來,處理DOM就會變得相當費時費力。特別是其對于內(nèi)存的需求,也將是成倍的增長,以至于在某些應用中使用DOM是一件很不劃算的事(比如在applet中)。這時候,一個較好的替代解決方法就是SAX。

          SAX在概念上與DOM完全不同。首先,不同于DOM的文檔驅(qū)動,它是事件驅(qū)動的,也就是說,它并不需要讀入整個文檔,而文檔的讀入過程也就是SAX的解析過程。所謂事件驅(qū)動,是指一種基于回調(diào)(callback)機制的程序運行方法。(如果你對Java新的代理事件模型比較清楚的話,就會很容易理解這種機制了)


          在XMLReader接受XML文檔,在讀入XML文檔的過程中就進行解析,也就是說讀入文檔的過程和解析的過程是同時進行的,這和DOM區(qū)別很大。解析開始之前,需要向XMLReader注冊一個ContentHandler,也就是相當于一個事件監(jiān)聽器,在ContentHandler中定義了很多方法,比如startDocument(),它定制了當在解析過程中,遇到文檔開始時應該處理的事情。當XMLReader讀到合適的內(nèi)容,就會拋出相應的事件,并把這個事件的處理權(quán)代理給ContentHandler,調(diào)用其相應的方法進行響應。


          Author: orangelizq
          email: orangelizq@163.com

          歡迎大家訪問我的個人網(wǎng)站 萌萌的IT人
          posted on 2007-07-14 14:43 桔子汁 閱讀(642) 評論(0)  編輯  收藏 所屬分類: Web Service
          主站蜘蛛池模板: 长海县| 汾阳市| 德格县| 年辖:市辖区| 民县| 卫辉市| 阿荣旗| 沾益县| 务川| 南溪县| 崇州市| 白朗县| 台中县| 广东省| 涟源市| 柏乡县| 奇台县| 鹿泉市| 黄骅市| 日照市| 宝清县| 肇源县| 巨鹿县| 龙江县| 三原县| 海原县| 健康| 南投县| 宜良县| 东阿县| 卢龙县| 农安县| 丰都县| 苍山县| 梁河县| 义乌市| 扶绥县| 海原县| 甘谷县| 万安县| 汝州市|