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

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

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


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


          Author: orangelizq
          email: orangelizq@163.com

          歡迎大家訪問我的個人網站 萌萌的IT人
          posted on 2007-07-14 14:43 桔子汁 閱讀(642) 評論(0)  編輯  收藏 所屬分類: Web Service
          主站蜘蛛池模板: 锦屏县| 桐乡市| 丰都县| 枣阳市| 桐柏县| 巴彦县| 宁明县| 股票| 漾濞| 常熟市| 光山县| 米易县| 台南县| 城步| 龙海市| 松阳县| 安福县| 徐闻县| 许昌市| 宜昌市| 永定县| 宝坻区| 久治县| 天津市| 罗江县| 招远市| 滦平县| 贡嘎县| 蚌埠市| 左权县| 古丈县| 朝阳区| 金川县| 容城县| 津市市| 昌都县| 临西县| 诏安县| 南靖县| 上林县| 象州县|