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

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

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

    軟件是對質量的不懈追求

    SAX與DOM之間的區別

    SAX (Simple API for XML) DOM (Document Object Model) 是當前兩個主要的XML API,幾乎所有商用的xml 解析器都同時實現了這兩個接口。因此如果你的程序使用了SAX或者DOM APIs,那么你的程序對xml解析器是透明。
     
    1. DOM以一個分層的對象模型來映射xml文檔。而SAX將文檔中的元素轉化為對象來處理。
     
    2. DOM將文檔載入到內存中處理,而SAX則相反,它可以檢測一個即將到來的 XML流,由此并不需要所有的XML代碼同時載入到內存中。
     
    SAX 處理是如何工作的

       SAX 
    在讀取 XML 流的同時處理它們,這很像以前的自動收報機紙帶(ticker tape)。請考慮下面的 XML 代碼片斷:
           <?xml version="1.0"?>
           <samples>
              <server>UNIX</server>
              <monitor>color</monitor>
           </samples>

       分析這個代碼片斷的 SAX 處理器一般情況下將產生以下事件: 
           Start document
           Start element (samples)
           Characters (white space)
           Start element (server)
           Characters (UNIX)
           End element (server)
           Characters (white space)
           Start element (monitor)
           Characters (color)
           End element (monitor)
           Characters (white space)
           End element (samples)
      
       SAX API 允許開發人員捕捉這些事件并對它們作出反應。
     
    SAX 處理涉及以下步驟:

         1.
    創建一個事件處理程序。 
         2.
    創建 SAX 解析器。 
         3.
    向解析器分配事件處理程序。 
         4.
    解析文檔,同時向事件處理程序發送每個事件。 

    基于事件的處理的優點和缺點

         
    這種處理的優點非常類似于流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由于應用程序只是在讀取數據時檢查數據,
       因此不需 要將數據存儲在內存中。這對于大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時
       停止解析。一般來說,SAX 還比它的替代者 DOM 快許多。
       另一方面,由于應用程序沒有以任何方式存儲數據,使用 SAX 來更改數據或在數據流中往后移是不可能的。
     
    DOM 和基于樹的處理
         DOM 是處理 XML 數據的傳統方法。使用 DOM 時,數據以樹狀結構的形式被加載到內存中。
         
    例如,在“SAX 處理是如何工作的”中用作例子的相同文檔在 DOM 中將表示為節點,DOM 使用父子關系。
    基于樹的處理的優點和缺點

        DOM 
    以及廣義的基于樹的處理具有幾個優點。首先,由于樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改。
           它還可以在任何時候在樹中上下導航,而不是像 SAX 那樣是一次性的處理。DOM 使用起來也要簡單得多。
        另一方面,在內存中構造這樣的樹涉及大量的開銷。大型文件完全占用系統內存容量的情況并不鮮見。此外,創建一棵 DOM 樹可能是一個緩慢的過程。

    如何在 SAX  DOM 之間選擇

      
    選擇 DOM 還是選擇 SAX,這取決于下面幾個因素:

        1.
    應用程序的目的:如果打算對數據作出更改并將它輸出為 XML,那么在大多數情況下,DOM 是適當的選擇。并不是說使用 SAX 就不能更改數據,
          但是該過程要復雜得多,因為您必須對數據的一份拷貝而不是對數據本身作出更改。 

        2.
    數據容量: 對于大型文件,SAX 是更好的選擇。 
          數據將如何使用:如果只有數據中的少量部分會被使用,那么使用 SAX 來將該部分數據提取到應用程序中可能更好。 另一方面,
          如果您知道自己以后會回頭引用已處理過的大量信息,那么 SAX 也許不是恰當的選擇。 

        3.
    對速度的需要: SAX 實現通常要比 DOM 實現更快。 

       SAX 
     DOM 不是相互排斥的,記住這點很重要。您可以使用 DOM 來創建 SAX 事件流,也可以使用 SAX 來創建 DOM 樹。事實上,用于創建 DOM 樹的大多數解析器實際上都使用 SAX 來完成這個任務!

    posted on 2009-11-14 13:33 BlakeSu 閱讀(434) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲熟女少妇一区二区| 亚洲A∨无码一区二区三区| jiz zz在亚洲| 国产日本一线在线观看免费| 亚洲国产综合精品| 亚洲av无码成人精品国产| 永久免费av无码网站韩国毛片| 日本成人在线免费观看| 亚洲精品少妇30p| 日本免费在线中文字幕| 亚洲AV无码精品色午夜果冻不卡| 亚洲日韩国产AV无码无码精品| 秋霞人成在线观看免费视频 | 亚洲国产91精品无码专区| 亚洲精品在线网站| av永久免费网站在线观看| 亚洲中文字幕无码久久精品1| 中文无码日韩欧免费视频| 日本无吗免费一二区| 黄色网页免费观看| 午夜两性色视频免费网站| 亚洲精品色午夜无码专区日韩| 大地影院MV在线观看视频免费| 日韩精品一区二区亚洲AV观看| 在线观看成人免费视频不卡| 亚洲欧美成人综合久久久| 亚洲人成网站在线观看青青| 男女午夜24式免费视频| 亚洲最大成人网色香蕉| 91精品国产免费久久国语麻豆| 67194在线午夜亚洲| 亚洲va中文字幕无码| 久久国产精品一区免费下载| 精品日韩99亚洲的在线发布| 四虎永久精品免费观看| 免费一级不卡毛片| 亚洲午夜成人精品无码色欲| 国产国拍亚洲精品福利 | 深夜福利在线视频免费| 亚洲日本va在线视频观看| 97国产免费全部免费观看 |