目前在Java中幾種常用的XML解析器的比較

來源:互聯網
上載者:User

幾種常用的XML解析器的比較

目前常用的XML的解析器主要有:SAX,DOM,Xerces

1、SAX處理的優點非常類似於流媒體的優點。分析能夠立即開始,而不是等待所有的資料被處理。而且,由於應用程式只是在讀取資料時檢查資料,因此不需要將資料存放區在記憶體中。這對於大型文檔來說是個巨大的優點。事實上,應用程式甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX 還比它的替代者 DOM 快許多。另一方面,由於應用程式沒有以任何方式儲存資料,使用 SAX 來更改資料或在資料流中往後移是不可能的。

2、DOM 以及廣義的基於樹的處理具有幾個優點。首先,由於樹在記憶體中是持久的,因此可以修改它以便應用程式能對資料和結構作出更改。它還可以在任何時候在樹中上下導航,而不是像 SAX 那樣是一次性的處理。DOM 使用起來也要簡單得多。另一方面,在記憶體中構造這樣的樹涉及大量的開銷。大型檔案完全佔用系統記憶體容量的情況並不鮮見。此外,建立一棵 DOM 樹可能是一個緩慢的過程。

3、選擇 DOM 還是選擇 SAX,這取決於下面幾個因素:
      應用程式的目的:如果打算對資料作出更改並將它輸出為 XML,那麼在大多數情況下,DOM 是適當的選擇。並不是說使用 SAX 就不能更改資料,但是該過程要複雜得多,因為您必須對資料的一份拷貝而不是對資料本身作出更改。
      資料容量: 對於大型檔案,SAX 是更好的選擇。資料將如何使用:如果只有資料中的少量部分會被使用,那麼使用 SAX 來將該部分資料提取到應用程式中可能更好。 另一方面,如果您知道自己以後會回頭引用已處理過的大量資訊,那麼 SAX 也許不是恰當的選擇。
      對速度的需要:SAX 實現通常要比 DOM 實現更快。
      SAX 和 DOM 不是相互排斥的,記住這點很重要。您可以使用 DOM 來建立 SAX 事件流,也可以使用 SAX 來建立 DOM 樹。事實上,用於建立 DOM 樹的大多數解析器實際上都使用 SAX 來完成這個任務!

4、SAX,DOM是兩種對XML文檔進行分析的方法(沒有具體的實現,只有介面),所以不是解譯器,如果光有他們,你是完成不了對xml文檔的處理的。SAX的包是org.xml.sax,DOM的包是org.w3c.dom,包的名稱很重要,它有助於你理解他們之間的關係。

5、jaxp是api,他封裝了sax/dom兩種介面。並在sax/dom的基礎之上,作了一套比較簡單的api以供開發人員使用。jaxp的包是javax.xml.parsers,可以看看jaxp的源檔案,它的檔案中包含了對sax或者dom的引用(import)jaxp也不是具體的實現,他只是一套api。如果你僅僅有jaxp那是無法工作的,(其實jaxp只是完成對sax、dom的封裝,產生了DocumentBuilderFactory/DocumentBuilder和SAXParserFactory SAXParser。也就是設計模式中的原廠模式,他的好處就是具體的對象( 解譯器)建立由子類完成)

6、xerces解譯器(號稱地球上最快的xml解譯器)在xerces中對jaxp中定義的SAXParser SAXParserFactory DocumentBuilder DocumentBuilderFactory進行了繼承(extends)對應SAXParserImpl XParserFactoryImpl DocumentBuilderImpl DocumentBuilderFactoryImpl這就是為什麼你的classpath中只要有xerces.jar(其中包含了sax dom jaxp )和 xercesImpl.jar就可以的原因了.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.