首页 > 代码库 > iOS 面试题之网络数据解析

iOS 面试题之网络数据解析

面试官问:说一下网络数据获取后的几种格式。

我:Json Xml格式数据,Json居多

面试官问:为什么Json居多?

我:因为= =服务器端这么写就这么用呗,只要提供数据,我哪里知道他给的是那种类型。

======================================================

分析两者之间的区别:http://baike.baidu.com/view/136475.htm?fr=aladdin#6_1

总结如下:
(1)可读性方面:基本相同,Xml的可读性比较好
(2)可扩展性方面:都具有很好的扩展性
(3)编码难度方面:相对而言:Json的编码比较容易
(4)解码难度:Json的解码难度基本为零,xml需要考虑子节点和父节点
(5)数据体积方面:Json相对于xml来讲,数据体积小,传递的速度跟快些
(6)数据交互方面:Json与JavaScript的交互更加方面,更容易解析处理,更好的数据交互
(7)数据描述方面:Xml对数据描述性比较好
(8)传输速度方面:Json的速度远远快于Xml

可以看出,Json在一定层次上,是优于Xml解析。

Json的解析原理:

由对象,数组构成的字符串。

数据类型:字符串、数字、BOOL、字典、数组。

字典:以“{”开始,以“}”结束,中间是字典的键值对。键和值中 间?用“:”隔开。多个键值对之间?用“,”隔开。

数组:以“[”开始,以“]”结束,中间是数据。数据以“,”分隔。

Xml的解析原理:

SAX:Simple API for XML。基于事件驱动的解析?方式,逐?行解析 数据。(采?用协议回调机制)

NSXMLParser是iOS?自带的XML解析类。采?用SAX?方式解析数据。

解析过程由NSXMLParserDelegate协议?方法回调

解析过程:开始标签->取值->结束标签->取值

DOM:Document Object Model(?文档对象模型)。解析时需要将XML?文件整体读?入,并且将XML结构化成树状,使?用时再通过树 状结构读取相关数据

GDataXMLNode是Google提供的开源XML解析类,对libxml2.dylib进?行了Objective-C的封装

采?用DOM?方式解析数据

iOS中包含?一个C语?言的动态链接库libxml2.dylib,解析速度?比 NSXMLParser快



iOS 面试题之网络数据解析