標籤:xml json ios 解析
XML -> 1. sax 2.Dom
JSON解析 在IOS5.0以後提供NSJSON 在5.0之前用SBJSON和JSONKit
本講內容1.解析的基本概念2.XML資料結構3.JSON資料結構4.兩種資料結構的優缺點
解析: 從事先規定好的格式中提取資料解析的前提: 提前約定好格式, 資料提供方按照格式提供資料,資料擷取方則按照格式擷取資料
XML基本概念可延伸標記語言 (XML)
功能:資料交換 Web服務 內容管理
XML資料結構的文法一對角括弧代表一個節點,或者標籤只有一個根節點節點可以互相嵌套沒有子節點的節點稱為葉子節點
<root> 根節點 <room_list> 子節點 <room> <room_id>100101010</room_id> <room_name>湖灣西區標準間</room_name> <room_price>1200</room_price> </room> </room_list></room>
JSON資料結構輕量級的資料交換格式,採用完全獨立於語言的文本格式,被稱為理想的資料交換語言
資料類型: 字串 數字 BOOL 字典 數組字典以"{" "}"開始和結束 鍵和值用": "隔開 多個鍵值用","隔開數組以"[ " " ] " 中間是資料 以","分隔
使用JSONKit 進行JSON解析
#pragma mark -#pragma mark 解析JSON//解析JSON-(void)parserJson{ NSString * path = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"json"]; //從某個路徑裡面擷取內容 NSData * data = [NSData dataWithContentsOfFile:path]; NSError * error = nil; NSMutableArray * arr = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error]; NSLog(@"arr == %@",arr); NSData * data2 = [NSJSONSerialization dataWithJSONObject:arr options:NSJSONWritingPrettyPrinted error:&error]; NSString * str = [[[NSString alloc] initWithData:data2 encoding:NSUTF8StringEncoding] autorelease]; NSLog(@"str == %@",str); }-(NSString *)reParserJson{ NSMutableDictionary * dic=[NSMutableDictionary dictionary]; [dic setObject:@"hua" forKey:@"1"]; NSError * error=nil; NSData * data=[NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error]; NSLog(@"data==%@",data); NSString * str=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"str==%@",str); return str;}
SAX解析 Simple API for XML
基於事件驅動的解析方式, 逐行解析資料 (採用協議回調機制)
NSXMLParser
是由IOS內建的XML解析類 採用SAX方式解析資料
解析過程由NSXMLParserDelegate協議方法回調
解析過程: 開始標籤 -> 取值 ->結束標籤 -> 取值
SAX 解析相當於列印DOM解析相當於複印