首页 > 代码库 > 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 面试题之网络数据解析