你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS 請求數據解析 XML 和 JSON

IOS 請求數據解析 XML 和 JSON

編輯:IOS開發綜合

好久沒寫文章了,回憶一下以前的內容記錄一下吧。

這一段主要接觸的就是數據解析,就說一下數據解析
現在數據解析一般解析兩種數據 xml 和 JSON
那就從xml解析說起吧
xml解析需要用到一個類 NSXMLParser 以及一個協議 NSXMLParserDelegate
首先NSXMLParser是一個 xml 解析器

要解析數據首先創建一個xml解析器

NSXMLParser *XMLParser = [[NSXMLParser alloc]initWithData:data];

其中data就是我們要解析的數據


然後執行解析就行 [XMLParser parse];
執行解析時就會回調以下協議中的幾個方法

#pragma mark NSXMLParserdelegate---
//開始解析文檔
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
//文檔開始解析的時候調用,在這裡可以初始化一些東西
}

//解析文檔結束
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//文檔解析完成時調用,這裡可以寫解析完成後的操作
}

//標簽解析開始
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
//標簽開始解析,其中elementName就是開始標簽的名稱
}

//標簽解析結束
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
//標簽開始解析,其中elementName就是結束標簽的名稱,
//在這裡你可以做一些邏輯判斷,看這個標簽裡的東西是不是自己需要的,然後進行操作
}

//解析出來的標簽值
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
// string 這個就是當前解析標簽的值,
}


其實還有一種xml解析的方法,就是dom解析,它是把XML看成樹型結構,先找到根節點,
然後利用循環嵌套,遍歷根節點的子節點,遍歷子節點的子節點,一直遍歷到葉子節點,當然葉子節點
是最後一層了,裡面就是我們要得數據。
這種方法我感覺不好用,太麻煩,循環嵌套太多。所以不推薦使用
而且需要導入libxml2.dylib這個類庫,最後還得修改路徑 /usr/include/libxml2
但是在這裡我還是把這個第三方類給出來吧
http://pan.baidu.com/s/1sjtXAUh


好接下來就是我們的JSON解析了。
我感覺JSON解析的解析過程不重要,重要的是JSON解析之後對結果的處理
JSON解析後是個dictionary,但是字典中有可能包含字典和數組,數組中還可以包含字典。
新浪微博的請求微博返回的數據經過JSON解析結果就是這樣的。
下面就簡單介紹一下JSON解析過程
其實就一句話

data就是解析數據
//IOS5自帶解析類NSJSONSerialization從data中解析出數據放到字典中
NSDictionary *weatherDic = [NSJSONSerialization JSONObjectWithData:Data options:NSJSONReadingMutableLeaves error:&error];

//TouchJSON
//將解析得到的內容存放字典中
NSDictionary *pRootDic = [[CJSONDeserializer deserializer]deserialize:data error:&error];
//這裡的解析對象是NSData類型

//SBJSON
// 獲取一個解析器對象
SBJsonParser *parser = [[[SBJsonParser alloc] init]autorelease];
//獲取json串解析後返回的字典
NSDictionary *rootDic = [parser objectWithString:String error:&error];
//需要注意的是要先把解析的數據給解碼為NSString類型然後才可以解析

//JSONKit
//獲取解析後的字典(完成解析,返回值為字典類型)
NSDictionary *pWeatherDic = [jsonStr objectFromJSONStringWithParseOptions:JKParseOptionLooseUnicode];//統一編碼標准
//注意 jsonStr還是把數據先解碼為NSString型,之後jsonStr直接用解析方法就行了


//這裡附帶一個把data轉化為NSString類型的方法
NSString *string = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

下面附上TouchJSON,SBJSON 和 JSONKit的第三方類的鏈接
http://pan.baidu.com/s/1bnpGwxD



好了今天就到這裡,把最近學的知識分享給大家,如有錯誤歡迎指正 —— LC




  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved