XML/JSON解析
JSON: 什么是JSON: 1,json是一种轻量级的数据格式,一般用于数据交互; 2,服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {“name” : "jack","age" : 10} {"names" : ["jack","rose","jim"]} 标准JSON格式的注意点:key必须用双引号 JSON解析方案: 1,在IOS中,JSON的常见解析方式有4种 第三方框架:JSONKit、SBJson、TouchJSON (性能从左到右,越差); 苹果原生(自带):NSJSONSerialization (性能最好); 2,NSJSONSerialization的常见方法 JSON数据-> OC对象 [NSJSONSerialization JSONObjectWithData:<#(NSData *)#> options:<#(NSJSONReadingOptions)#> error:<#(NSError *__autoreleasing *)#>]; OC对象-> JSON数据 [NSJSONSerialization dataWithJSONObject:<#(id)#> options:<#(NSJSONWritingOptions)#> error:<#(NSError *__autoreleasing *)#>]; JSON解析例子:
- (NSArray *)parseJSONData:(NSData *)data { // 解析数据 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; NSArray *array = dict[@"videos"]; NSMutableArray *videos = [NSMutableArray array]; for (NSDictionary *videoDict in array) { HMVideo *video = [HMVideo videoWithDict:videoDict]; [videos addObject:video]; } return videos; } 一、XML介绍 : 全称是Extensible Markup Laugage ,译作“可扩展标记语言”; 跟JSON一样,也是常用的一种用于交互的数据格式; <videos> <video name = "abc" length = "20" /> <video name = "abcd" length = "30" /> <video name = "abcde" length = "40" /> </videos> 二、XML解析 1,DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件;(可以随机访问一个节点) 2,SAX解析:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件;(不可以随机访问一个节点) IOS中的XML解析手段有很多: 1,苹果原生 NSXMLParser : SAX方式解析,使用简单 2,第三方框架 libxml2 : 纯C语言,默认包含在IOS SDK中,同时支持DOM和SAX方式解析 GDataXML : DOM方式解析,由Google开发,基于libxml2 3,XML解析方式建议: 小文件 :NSXMLParser、libxml2 大文件 :GDataXML NSXMLParser: 使用步骤: //传入XML数据,创建解析器; NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; //设置代理,监听解析过程; parser.delegate = self; //开始解析; [parser parser]; NSXMLParser采取的是SAX方式解析,特点是事件驱动,下面情况都会通知代理; 1,当扫描到文档的开始与结束 2,当扫描到元素的开始与结束 GDataXML配置: 1,GDataXML基于libxml2库,得做以下配置; 导入libxml2库,如图:
2,设置libxml2的头文件搜索路径(为了能找到libxml2库得所有头文件) 在Head Search Path中加入 /usr/include/libxml2 3,设置链接参数(自动链接libxml2) 在Other Linker Flags中加入 -lxml2 注意:由于GDataXML是非ARC的,所以要配置编译参数; GDataXML使用: GDataXML中常用的类 GDataXMLDocument : 代表整个XML文档 GDataXMLElement : 代表文档中每个元素 使用attributeForName : 方法可以获得属性值 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |