IOS 學習之XML解析(一)
在IOS平臺上進行XML文件的解析有很多種方法,在SDK裡面有自帶的解析方法,但是大多情況下都傾向於用第三方的庫,原因是解析效率更高、使用上更方便,關於IOS平臺各種解析XML庫的優缺點分析,可以看下這篇文章:http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project
這裡主要介紹一下由Google提供的一種在IOS平臺上進行XML解析的開源庫GDataXML,可以到http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/下載原始碼,下載下來後進入資料夾找到XMLSupport資料夾,將裡面的GDataXMLNode.h和GDataXMLNode.m檔案拖拽到專案中新建的資料夾即可(我這裡是建的GDataXML資料夾),注意要選中複製檔案到專案中而不是隻是引用,如圖:
然後就是對工程進行一些配置,點選工程根目錄然後點選左邊的Target,進入Build Phases,然後點選第三個Link binary with libraries,點選加號搜尋libxml2並將這個庫新增到工程,如圖:
接下來再進入Build Settings,在搜尋框中搜尋Head Search Path,然後雙擊並點選+按鈕新增/usr/include/libxml2,如圖:
接下來再搜尋框中搜尋Other linker flags,同樣的方式新增-lxml2,如圖:
到這裡,新增和配置的工作就完成了(是有點麻煩),接下來就看如何使用了:
首先在工程中新建一個xml檔案,作為我們要解析的物件,新建方法是在工程中新建一個Empty的檔案,命名為users.xml,然後新增內容:
- <?xml version="1.0" encoding="utf-8"?>
- <Users>
- <User id="001"]]>
- <name>Ryan</name>
- <age>24</age>
- </User>
- <User id="002"]]>
- <name>Tang</name>
- <age>23</age>
- </User>
- </Users>
接下來就可以開始解析了,在需要解析的檔案中引入標頭檔案:#import"GDataXMLNode.h"
我是新建的一個Empty工程,所以直接在AppDelegate.m中使用,程式碼如下:
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- self.window = [[[UIWindowalloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
- // Override point for customization after application launch.
- self.window.backgroundColor = [UIColorwhiteColor];
- [self.windowmakeKeyAndVisible];
- //獲取工程目錄的xml檔案
- NSString *filePath = [[NSBundle mainBundle] pathForResource:@"users" ofType:@"xml"];
- NSData *xmlData = [[NSData alloc] initWithContentsOfFile:filePath];
- //使用NSData物件初始化
- GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0error:nil];
- //獲取根節點(Users)
- GDataXMLElement *rootElement = [doc rootElement];
- //獲取根節點下的節點(User)
- NSArray *users = [rootElement elementsForName:@"User"];
- for (GDataXMLElement *user in users) {
- //User節點的id屬性
- NSString *userId = [[user attributeForName:@"id"] stringValue];
- NSLog(@"User id is:%@",userId);
- //獲取name節點的值
- GDataXMLElement *nameElement = [[user elementsForName:@"name"] objectAtIndex:0];
- NSString *name = [nameElement stringValue];
- NSLog(@"User name is:%@",name);
- //獲取age節點的值
- GDataXMLElement *ageElement = [[user elementsForName:@"age"] objectAtIndex:0];
- NSString *age = [ageElement stringValue];
- NSLog(@"User age is:%@",age);
- NSLog(@"-------------------");
- }
- returnYES;
- }
編譯執行在控制檯輸出結果如下:
相關文章
- iOS – XML解析iOSXML
- iOS - XML解析iOSXML
- Qt學習之XMLQTXML
- iOS開發之解析XML格式資料iOSXML
- 【Go學習筆記16】解析xmlGo筆記XML
- java基礎學習之--XMLJavaXML
- xml解析之domXML
- XML輕鬆學習手冊(6)XML例項解析(轉)XML
- python之XML解析PythonXML
- Android學習筆記之AndroidManifest.xml檔案解析(詳解)Android筆記XML
- iOS學習心得之:KVOiOS
- Python XML解析之DOMPythonXML
- XML輕鬆學習手冊(5)XML語法之四(轉)XML
- Android學習之Build.xml檔案AndroidUIXML
- XML輕鬆學習手冊(3)XML概念之一(轉)XML
- Android之XML檔案解析AndroidXML
- Java解析XML學習筆記1 – 四種方法比較JavaXML筆記
- iOS學習資源(一)iOS
- iOS學習之iOS沙盒(sandbox)機制和檔案操作(一)iOS
- iOS學習之深入理解RunLoopiOSOOP
- 【spring原始碼系列】之【xml解析】Spring原始碼XML
- Xml解析XML
- XML的JAVA 解析(一)(1) (轉)XMLJava
- XML的JAVA 解析(一)(3) (轉)XMLJava
- XML的JAVA 解析(一)(2) (轉)XMLJava
- XML的JAVA 解析(一)(4) (轉)XMLJava
- XML的JAVA 解析(一)(5) (轉)XMLJava
- IOS學習筆記——iOS元件之UIScrollView詳解iOS筆記元件UIView
- Python學習——xml模組PythonXML
- IOS學習之NSNotificationCenter訊息機制iOS
- Swift學習筆記(2)網路資料交換格式(XML,JSON)解析 [iOS實戰 入門與提高卷]Swift筆記XMLJSONiOS
- iOS學習iOS
- 學習iOSiOS
- go 解析xmlGoXML
- xml php 解析XMLPHP
- 【Java】解析xmlJavaXML
- Java解析XMLJavaXML
- jaxb解析xmlXML