在iPhone開發中,XML的解析有不少選擇,iOS SDK提供了NSXMLParser和libxml2兩個類庫,另外還有不少第三方類庫可選,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。問題是應該選擇哪個呢?html
解析 XML 一般有兩種方式,DOM 和 SAX:ios
通常在iOS平臺下,比較經常使用的XML解析類庫有以下幾種:git
1. 從http://code.google.com/p/gdata-objectivec-client/downloads/list下載「gdata-objective-c client library.」github
2. 解壓縮文件,找到Source\XMLSupport,而且將其中的GDataXMLNode.h 和 GDataXMLNode.m文件拖到項目中objective-c
3. 選中項目,選中「Build Settings」標籤頁app
4. 將Build Settings頁中,頂部的「Basic」標籤切換到「All」iphone
5. 找到「Paths\Header Search Paths」項,並添加「/usr/include/libxml2」到列表中post
6. 找到「Linking\Other Linker Flags」項,並添加「-lxml2」到列表中性能
在須要調用GDataXML的代碼文件頭部,加入:ui
#import 「GDataXMLNode.h」
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」
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」
讀取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];