加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML/JSON解析

发布时间:2020-12-16 06:13:04 所属栏目:百科 来源:网络整理
导读:JSON : 什么是 JSON : 1 ,json 是一种轻量级的数据格式,一般用于数据交互; 2 ,服务器返回给客户端的数据,一般都是 JSON 格式或者 XML 格式(文件下载除外) JSON 的格式很像 OC 中的字典和数组 {“name” : "jack","age" : 10} {"names" : ["jack","ro

JSON

什么是JSON

1,json是一种轻量级的数据格式,一般用于数据交互;

2,服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)

JSON的格式很像OC中的字典和数组

{“name” : "jack","age" : 10}

{"names" : ["jack","rose","jim"]}

标准JSON格式的注意点:key必须用双引号


JSON解析方案:

1,在IOS中,JSON的常见解析方式有4

第三方框架:JSONKitSBJsonTouchJSON (性能从左到右,越差)

苹果原生(自带):NSJSONSerialization (性能最好)

2NSJSONSerialization的常见方法

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解析

1DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件;(可以随机访问一个节点)

2SAX解析:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件;(不可以随机访问一个节点)

IOS中的XML解析手段有很多:

1,苹果原生

NSXMLParser : SAX方式解析,使用简单

2,第三方框架

libxml2 : C语言,默认包含在IOS SDK中,同时支持DOMSAX方式解析

GDataXML : DOM方式解析,由Google开发,基于libxml2

3XML解析方式建议:

小文件 NSXMLParserlibxml2

大文件 GDataXML


NSXMLParser:

使用步骤:

//传入XML数据,创建解析器;

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

//设置代理,监听解析过程;

parser.delegate = self;

//开始解析;

[parser parser];

NSXMLParser采取的是SAX方式解析,特点是事件驱动,下面情况都会通知代理;

1,当扫描到文档的开始与结束

2,当扫描到元素的开始与结束




GDataXML配置:

1GDataXML基于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 : 方法可以获得属性值

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读