天天看點

iOS XML解析器

           常用XML解析器分為兩類 DOM解析器和SAX解析器

DOM解析XML時,讀入整個XML文檔并建構一個駐留記憶體的樹結構(節點樹),通過周遊樹結構可以檢索任意XML節點,讀取它的屬性和值。而且通常情況下,可以借助XPath,直接查詢XML節點。

SAX解析XML,是基于事件通知的模式,一邊讀取XML文檔一邊處理,不必等整個文檔加載完之後才采取操作,當在讀取解析過程中遇到需要處理的對象,會發出通知對其進行處理。

iOS SDK提供了NSXMLParser和libxml2兩個類庫,另外還有很多第三方類庫可選,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。

NSXMLParser 這是iPhone SDK中自帶的Sax解析器,在DOM解析方面較弱,由Objective-C語言編寫。    http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html

libxml2 這也是iPhone SDK中自帶的,是一個開源的庫, 這是基于C的,是以比NSXML用得更廣一些。主要的特性就是可以一邊讀取一邊解析。也就是說,xml檔案一邊還在下載下傳着,你的程式中已經可以顯示裡面的内容了。 

http://xmlsoft.org/

TBXML 這是一個輕量級的DOM解析器,為了加快DOM方式的解析速度而誕生,不支援XPath,也不能修改XML檔案中的内容。

http://www.tbxml.co.uk/TBXML/TBXML_Free.html

TouchXML 這是一個NSXML類似的DOM解析器,就像TBXML一樣,這是隻讀的,但是卻支援XPath查詢。

https://github.com/TouchCode/TouchXML

KissXML 這是TouchXML的改進版本,支援讀寫。

http://code.google.com/p/kissxml/

TinyXML 基于C的DOM解析器,體積很小但是支援讀寫,不支援XPath,但是你可以使用TinyXpath來幫助這個庫。

http://www.grinninglizard.com/tinyxml/

GDataXML 這是谷歌官方開發的Objective-C用戶端庫的一部分,也是一個NSXML類似的DOM解析器,支援讀寫和XPath查詢。

http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/

如果是讀取很小的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”到清單中

在需要調用GDataXML的代碼檔案頭部,加入:

#import “GDataXMLNode.h” 

TouchXML

1. 從https://github.com/TouchCode/TouchXML下載下傳最新TouchXML源碼

2. 解壓後,将其中的Sources目錄下的檔案和目錄都拖到項目中

iOS XML解析器

在需要調用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]; 

原部落格位址 http://mobile.51cto.com/iphone-281283.htm

     本文轉自新風作浪 51CTO部落格,原文連結:http://blog.51cto.com/duxinfeng/1208725,如需轉載請自行聯系原作者

繼續閱讀