最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS開發(fā)中常見的解析XML的類庫以及簡要安裝方法

 更新時間:2015年10月25日 10:22:43   作者:念茜  
這篇文章主要介紹了iOS開發(fā)中常見的解析XML的類庫以及簡要安裝方法,簡要地說明了在Xcode下的一些特點以供對比,需要的朋友可以參考下

在iPhone開發(fā)中,XML的解析有很多選擇,iOS SDK提供了NSXMLParser和libxml2兩個類庫,另外還有很多第三方類庫可選,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。問題是應該選擇哪一個呢?
解析 XML 通常有兩種方式,DOM 和 SAX:
DOM解析XML時,讀入整個XML文檔并構建一個駐留內存的樹結構(節(jié)點樹),通過遍歷樹結構可以檢索任意XML節(jié)點,讀取它的屬性和值。而且通常情況下,可以借助XPath,直接查詢XML節(jié)點。
SAX解析XML,是基于事件通知的模式,一邊讀取XML文檔一邊處理,不必等整個文檔加載完之后才采取操作,當在讀取解析過程中遇到需要處理的對象,會發(fā)出通知對其進行處理。
一般在iOS平臺下,比較常用的XML解析類庫有如下幾種:
NSXMLParser,http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html ,這是一個SAX方式解析XML的類庫,默認包含在iOS SDK中,使用也比較簡單。
libxml2,http://xmlsoft.org/,是一套默認包含在iOS SDK中的開源類庫,它是基于C語言的API,所以使用起來可能不如NSXML方便。這套類庫同時支持DOM和SAX解析,libxml2的SAX解析方式還是非??岬模驗樗梢赃呑x取邊解析,尤其是在從網上下載一個很大的XML文件,就可以一邊下載一邊對已經下載好的內容進行解析,極大的提高解析效率。
TBXML,http://www.tbxml.co.uk/TBXML/TBXML_Free.html,這是一套輕量級的DOM方式的XML解析類庫,有很好的性能和低內存占用,不過它不對XML格式進行校驗,不支持XPath,并且只支持解析,不支持對XML進行修改。
TouchXML,https://github.com/TouchCode/TouchXML,這也是一套DOM方式的XML解析類庫,支持XPath,不支持XML的修改。
KissXML,http://code.google.com/p/kissxml/,這是一套基于TouchXML的XML解析類庫,和TouchXML相比,支持了XML的修改。
TinyXML,http://www.grinninglizard.com/tinyxml/,這是一套小巧的基于C語言的DOM方式進行XML解析的類庫,支持對XML的讀取和修改,不直接支持XPath,需要借助另一個相關的類庫TinyXPath才可以支持XPath。
GDataXML,http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/,這是一套Google開發(fā)的DOM方式XML解析類庫,支持讀取和修改XML文檔,支持XPath方式查詢。
那么對于如何在項目中選擇合適的XML解析類庫呢?網上已經有人對這幾款XML類庫做過分析和對比,可參考《How To Choose The Best XML Parser for Your iPhone Project》http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project 一文,基本比較準確和客觀,文中建議:
如果是讀取很小的XML文檔,性能基本上沒有什么差別,不過從調用的方便性來說,建議使用TouchXML、KissXML或GDataXML
如果是需要讀取和修改XML文檔,建議使用KissXML或GDataXML
如果需要讀取非常大的XML文檔,則建議使用libxml2或TBXML
如果你不想去調用第三方類庫,那么使用NSXML也可以

安裝說明
GDataXML
1. 從http://code.google.com/p/gdata-objectivec-client/downloads/list下載“gdata-objective-c client library.”
2. 解壓縮文件,找到Source\XMLSupport,并且將其中的GDataXMLNode.h 和 GDataXMLNode.m文件拖到項目中
3. 選中項目,選中“Build Settings”標簽頁
4. 將Build Settings頁中,頂部的“Basic”標簽切換到“All”
5. 找到“Paths\Header Search Paths”項,并添加“/usr/include/libxml2”到列表中
6. 找到“Linking\Other Linker Flags”項,并添加“-lxml2”到列表中

20151025102314651.png (599×484)

在需要調用GDataXML的代碼文件頭部,加入:

復制代碼 代碼如下:
#import “GDataXMLNode.h”

TouchXML
1. 從https://github.com/TouchCode/TouchXML下載最新TouchXML源碼
2. 解壓后,將其中的Sources目錄下的文件和目錄都拖到項目中
3. 選中項目,選中“Build Settings”標簽頁
4. 將Build Settings頁中,頂部的“Basic”標簽切換到“All”
5. 找到“Paths\Header Search Paths”項,并添加“/usr/include/libxml2”到列表中
6. 找到“Linking\Other Linker Flags”項,并添加“-lxml2”到列表中
在需要調用TouchXML的代碼文件頭部,加入:

復制代碼 代碼如下:
#import “TouchXML.h”

TBXML
1. 從http://www.tbxml.co.uk/TBXML/TBXML_Free.html下載最新TBXML源碼
2. 解壓后,將其中的TBXML.h, TBXML.m, NSDataAdditions.h和NSDataAddtions.m四個文件拖到項目中
3. 添加對libz.dylib類庫的應用
在需要調用TBXML的代碼文件頭部,加入:
復制代碼 代碼如下:
#import “TBXML.h”


使用說明
GDataXML
讀取XML文件,并解析成為DOM文檔對象示例:

復制代碼 代碼如下:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"xml"]; 
NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath]; 
NSError *error; 
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error]; 
if (doc == nil) { return nil; } 
NSLog(@"%@", doc.rootElement); 
[doc release]; 
[xmlData release]; 

相關文章

  • iOS關于多張圖片上傳、地址返回順序問題及解決方案

    iOS關于多張圖片上傳、地址返回順序問題及解決方案

    這篇文章主要介紹了iOS關于多張圖片上傳、地址返回順序問題,文章給大家?guī)砹巳N解決方案,通過實例文字說明相結合的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2018-07-07
  • iOS實現比例拼圖的方法示例

    iOS實現比例拼圖的方法示例

    這篇文章主要給大家介紹了關于iOS實現比例拼圖的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者開發(fā)iOS具有一定的參考學習價值,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧
    2018-07-07
  • iOS AFNetworking各種功能封裝類代碼

    iOS AFNetworking各種功能封裝類代碼

    下面小編就為大家分享一篇iOS AFNetworking各種功能封裝類代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • iOS應用中使用AsyncSocket庫處理Socket通信的用法講解

    iOS應用中使用AsyncSocket庫處理Socket通信的用法講解

    這篇文章主要介紹了iOS應用中使用AsyncSocket庫處理Socket通信的用法講解,AsyncSocket同時支持TCP和UDP,文中展示了其建立斷開連接及發(fā)送接收消息的操作,very好用,需要的朋友可以參考下
    2016-05-05
  • 深入解析iOS應用開發(fā)中九宮格視圖布局的相關計算方法

    深入解析iOS應用開發(fā)中九宮格視圖布局的相關計算方法

    這篇文章主要介紹了iOS應用開發(fā)中九宮格視圖布局的計算方法,包括item尺寸和坐標等一系列影像布局的數值相關計算的講解,需要的朋友可以參考下
    2016-03-03
  • 使用IOS AirPrint實現打印功能詳解

    使用IOS AirPrint實現打印功能詳解

    這篇文章主要介紹了使用IOS AirPrint實現打印功能詳解,想了解無線打印的同學,一定要看一下
    2021-04-04
  • iOS如何保持程序在后臺長時間運行

    iOS如何保持程序在后臺長時間運行

    這篇文章主要為大家詳細介紹了iOS如何保持程序在后臺長時間運行,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS開發(fā)實現轉盤功能

    iOS開發(fā)實現轉盤功能

    這篇文章主要為大家詳細介紹了iOS開發(fā)實現轉盤功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • iOS App開發(fā)中通過UIDevice類獲取設備信息的方法

    iOS App開發(fā)中通過UIDevice類獲取設備信息的方法

    UIDevice最常見的用法就是用來監(jiān)測iOS設備的電量了,然后再實現電池狀態(tài)通知非常方便,除此之外還有傳感器等信息的獲取,這里我們就來總結一下iOS App開發(fā)中通過UIDevice類獲取設備信息的方法:
    2016-07-07
  • iOS使用原生AVCapture系列

    iOS使用原生AVCapture系列

    這篇文章主要為大家詳細介紹了iOS使用原生AVCapture系列的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10

最新評論

珲春市| 长寿区| 沅江市| 宁安市| 东光县| 淮滨县| 淮南市| 佛教| 莎车县| 息烽县| 莆田市| 顺昌县| 大庆市| 秦皇岛市| 呼和浩特市| 乐清市| 湘西| 金湖县| 安乡县| 吴桥县| 梁河县| 安丘市| 临高县| 台东市| 余姚市| 名山县| 扬州市| 西充县| 澄城县| 江源县| 福鼎市| 永吉县| 新津县| 阳曲县| 南陵县| 福海县| 清镇市| 永昌县| 马龙县| 页游| 通化市|