XML 解析類庫對比

在iPhone開發中,XML的解析有不少選擇,僅iOS SDK就提供了NSXMLParser和libxml2兩個類庫,還有如TBXML、TouchXML、KissXML、TinyXML和GDataXML等第三方類庫。性能

解析XML一般有兩種方式:DOM和SAXxml

DOM解析XML時,讀入整個XML文檔並構建一個駐留內存的樹結構(稱「節點樹」),以後就經過遍歷樹結構能夠檢索任意XML節點,讀取它的屬性和值。而起一般狀況下,能夠藉助XPath,直接查詢XML節點。 SAX解析XML,是基於事件通知的模式,一邊讀取XML文檔一邊處理,沒必要等整個文檔加載完以後才採起操做,當在讀取解析過程當中遇到須要處理的對象,會發出通知對其進行處理。對象

通常在iOS平臺下,比較經常使用的XML解析類庫有以下幾種:事件

  1. NSXMLParser 這是一個SAX方式解析XML的類庫,默認包含在iOS SDK中,使用也比較簡單。
  2. libxml2 是一套默認包含在iOS SDK中的開源類庫,它是基於C語言的API,因此使用起來相對不太方便,但它同時支持DOM和SAX解析,尤爲是它的SAX解析方式很酷,能夠邊讀邊解析,很是適用於從網上下載一個很大的XML文件,可極大提供解析效率。
  3. TBXML 是一套輕量級的DOM方式的XML解析類庫,有很好的性能和低內存佔用,不過它不對XML格式進行校驗,不支持XPath,而且只支持解析,不支持對XML進行修改。
  4. TouchXML 這也是一套DOM方式的XML解析類庫,支持XPath,不支持XML的修改。
  5. KissXML 這是一套基於TouchXML的XML解析類庫,只不過實現了支持XML的修改。
  6. TinyXML 這是一套小巧的基於C語言的DOM方式進行XML解析的類庫,支持對XML的讀取和修改,不直接支持XPath,須要藉助TinyXPath才能夠支持XPath。
  7. GDataXML 它是Google開發的DOM方式XML解析類庫,支持讀取和修改XML文檔,支持XPath方式查詢。

以上幾大類庫,在讀取很小的XML文檔上,性能基本沒有差異,不過從調用的方便性來講,建議使用TouchXML、KissXML或GDataXML。內存

若是是須要讀取和修改XML文檔,建議使用KissXML或GDataXML。開發

若是須要讀取很是大的XML文檔,則建議使用libxml2或TBXML。文檔

不想使用第三方類庫,則就使用iOS自帶的NSXMLParser。效率

相關文章
相關標籤/搜索