技术博客 新浪微博
//转载请注明出处--本文永久链接:
本文对应pdf文档下载链接,猛戳-->: |
XML & JSON ---iOS-Apple苹果
Fullscreen
XML & JSON HTML & XML • HTML - 是 用来描述网页的一种语言 - HTML 指的是超文本 标记 语言 (Hyper Text Markup Language) - HTML 不是一种编程语言,而是一种标记语言 (markup language) - HTML 被设计用来显示数据 • HTML5 - 是下一代的 HTML - 增加了用于绘画的 canvas 元素 - 用于媒介回放的 video 和 audio 元素等等 • XML - XML 是一种标记语言,很类似 HTML - XML 的 设计宗旨是传输和存储数据 ,而非显示数据 XML&JSON的设计宗旨是传输和存储数据,而非显示数据 XML & JSON 简介 • JSON
- 作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络 数据的通用格式 - 基于JavaScript的一个子集 - 易读性略差,编码手写难度大,数据量小 - JSON格式取代了XML给网络传输带来了很大的便利,但是却没有 了XML的一目了然,尤其是JSON数据很长的时候,我们会陷入繁 琐复杂的数据节点查找中 • XML - 可扩展标记语言 - 用于标记电子文件使其具有结构性的标记语言,可以用来标记数 据、定义数据类型,是一种允许用户对自己的标记语言进行定义 的源语言 - 易读性高,编码手写难度小, 数据量大 JSON 格式说明 • 对象: {} 括起来的内容 - 数据结构为 {key : value,key : value,...} 的键值对的结构 - 可以反序列化为 OC 中的 NSDictionary • 数组: [] 括起来的内容 - 数据结构为 ["java","javascript","vb",...] - 可以反序列化为 OC 中的 NSArray Ø 序列化: 在传输之前,将对象转换成 有序 的字符串或者二进制数据流 Ø 反序列化: 将接收到的字符串或者二进制数据流 转换成对象或者数组 , 以便程序访问
解析服务器端返回的 JSON 数据 • 作为一种轻量级的数据交换格式,JSON正在逐步取代XML,成为网络数据的通用格式• 从iOS 5开始,使用NSJSONSerialization对JSON解析• 其他常见的三种JSON解析第三方库: -SBJson- JSONKit- TouchJson• 从性能上来说,NSJSONSerialization最好,JSONKit次之, SBJson使用较为广泛,API简单易用 加载 JSON 演练 SDWebImage-- 第三方框架 • 引入第
三方框架第一件事情,编译!• 引入第三方框架的原则: - 是否广泛被使用- 能够看懂所有的源代码• • 用第三方框架最大的好处:提高开发效率! • 大牛或者专业团队开发的•SpriteKit• Cocos2d-x 张晓龙 Cocos Builder• ASI 非ARC时代,被称为HTTP访问终结者!2012.11
• JSON是轻量级的数据交换格式,正逐步取代XML,成为通用网络数据 格式• 使用类方法JSONObjectWithData:options:error:可以将接收到的JSON数 据反序列化为NSArray或NSDictionary等对象• 技巧:1. 将加载内容反序列化为JSON后,可以先保存至plist文件,以便后续操作2. 由于是网络应用,不要使用UIImage的同步加载方法设置ImageView的内 容,否则容易造成应用阻塞,影响用户体验3. 加载网络图片使用的第三方框架SDWebImage,官网地址: https:// NSXMLParser 解析方法 • NSXMLParser 是 SAX 方法解析 - SAX ( Simple API for XML ) • 只能读,不能修改 ,只能顺序访问,适合解析大型 XML , 解析速 度快 • 常应用于处理大量数据的 XML ,实现异构系统的数据访问,实现 跨平台 • 从文档的开始通过每一节点移动,定位一个特定的节点 - DOM ( Document Object Model ) • 不仅能读,还能修改 ,而且能够实现随机访问,缺点是 解析速度 慢 ,适合解析小型文档 • 一般应用与小型的配置 XML ,方便操作 • 为载入到内存的文档节点建立类型描述,呈现可横向移动、潜在 巨大的树型结构 • 在内存中生成节点树操作 代价昂贵 NSXMLParser 解析过程 • 1. 创建 NSXMLParser 实例,并传入从服务器接收的 XML 数据 • 2. 定义解析器 代理 • 3. 解析器 解析 • 4. 通过解析代理方法完成 XML 数据的解析 NSXMLParser 解析代理方法 // 1. 开始解析 XML 文档 - ( void )parserDidStartDocument: !!// 2. 开始解析某个元素,会遍历整个 XML ,识别元素节点名称 - ( void )parser:didStartElement:namespaceURI:qualifiedName:attributes:! // 3. 文本节点,得到文本节点里存储的信息数据, 对于大数据可能会接收多次!为了节约内存开销 - ( void )parser:foundCharacters:! // 4. 结束某个节点,存储从 parser:foundCharacters: 方法中获取到的信息 - ( void )parser:didEndElement:namespaceURI:qualifiedName:! ! 注意:在解析过程中, 2 、 3 、 4 三个方法会不停的重复执行,直到遍历完成为止 ! !// 5. 解析 XML 文档结束 - ( void )parserDidEndDocument:! // 6. 解析出错 - ( void )parser:parseErrorOccurred:! NSXMLParser 解析代理方法
© . Powered by