XML & JSON---iOS-Apple苹果官方文档翻译
本文对应pdf文档下载链接,猛戳-->: |
XML & JSON ---iOS-Apple苹果
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
- 基于JavaScript的一个子集
- 易读性略差,编码手写难度大,数据量小
- JSON格式取代了XML给网络传输带来了很大的便利,但是却没有 了XML的一目了然,尤其是JSON数据很长的时候,我们会陷入繁 琐复杂的数据节点查找中
• XML
- 可扩展标记语言
- 用于标记电子文件使其具有结构性的标记语言,可以用来标记数 据、定义数据类型,是一种允许用户对自己的标记语言进行定义 的源语言
- 易读性高,编码手写难度小,数据量大

JSON格式说明
• 对象: {} 括起来的内容- 数据结构为{key:value,key:value,...}的键值对的结构 - 可以反序列化为OC中的NSDictionary
• 数组: []括起来的内容- 数据结构为["java","javascript","vb",...] - 可以反序列化为OC中的NSArray
Ø 序列化:在传输之前,将对象转换成有序的字符串或者二进制数据流
Ø 反序列化:将接收到的字符串或者二进制数据流转换成对象或者数组, 以便程序访问 
• 作为一种轻量级的数据交换格式,JSON正在逐步取代XML,成
为网络数据的通用格式
• 从iOS 5开始,使用NSJSONSerialization对JSON解析
• 其他常见的三种JSON解析第三方库: -SBJson
- JSONKit
- TouchJson
• 从性能上来说,NSJSONSerialization最好,JSONKit次之, SBJson使用较为广泛,API简单易用
加载JSON演练 


SDWebImage--第三方框架 • 引入第
• 引入第三方框架的原则: - 是否广泛被使用- 能够看懂所有的源代码
• http://www.github.com
• 用第三方框架最大的好处:提高开发效率! • 大牛或者专业团队开发的•SpriteKit
• Cocos2d-x 张晓龙 Cocos Builder
• ASI 非ARC时代,被称为HTTP访问终结者!2012.11


• 使用类方法JSONObjectWithData:options:error:可以将接收到的JSON数 据反序列化为NSArray或NSDictionary等对象
• 技巧:
1. 将加载内容反序列化为JSON后,可以先保存至plist文件,以便后续操作
2. 由于是网络应用,不要使用UIImage的同步加载方法设置ImageView的内 容,否则容易造成应用阻塞,影响用户体验
3. 加载网络图片使用的第三方框架SDWebImage,官网地址: https:// github.com/rs/SDWebImage

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解析代理方法





XML & JSON---iOS-Apple苹果官方文档翻译的更多相关文章
- iOS数据存取---iOS-Apple苹果官方文档翻译
CHENYILONG Blog iOS数据存取---iOS-Apple苹果官方文档翻译 数据存取/*技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http:// ...
- iOS网络基础---iOS-Apple苹果官方文档翻译
CHENYILONG Blog iOS网络基础---iOS-Apple苹果官方文档翻译 iOS网络基础 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http: ...
- iOS静态库 ---iOS-Apple苹果官方文档翻译
iOS静态库 ---iOS-Apple苹果官方文档翻译 •什么是库? 库是共享程序代码的方式,一般分为静态库和动态库.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使⽤用就为什 ...
- NSURLSession---iOS-Apple苹果官方文档翻译
CHENYILONG Blog NSURLSession---iOS-Apple苹果官方文档翻译 NSURLSession 技术博客http://www.cnblogs.com/ChenYilong/ ...
- IOS开发苹果官方Sample Code及下载地址
IOS开发苹果官方Sample Code及下载地址 在线浏览地址:https://developer.apple.com/library/ios/navigation/#section=Resourc ...
- CALayer---iOS-Apple苹果官方文档翻译之CALayer
CHENYILONG Blog CALayer---iOS-Apple苹果官方文档翻译之CALayer CALayer /*技术博客http://www.cnblogs.com/ChenYilong/ ...
- UIWebView---iOS-Apple苹果官方文档翻译
CHENYILONG Blog UIWebView---iOS-Apple苹果官方文档翻译 UIWebView 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博h ...
- iOS程序启动原理---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/Ch ...
- 基本控件文档-UITableView---iOS-Apple苹果官方文档翻译
//转载请注明出处--本文永久链接:http://www.cnblogs.com/ChenYilong/p/3496969.html 技术博客http://www.cnblogs.com/ChenYi ...
随机推荐
- Java多线程下单例
/* 多线程下的单例 */ //饿汉式 class Single { private static final Single s = new Single(); private Single(){} ...
- java沙盒
JAVA的安全模型不同于传统的安全方法,传统的安全方法中,大多数操作系统允许应用程序充分访问系统资源,在操作系统不提供安全保护的机器里,运行环境不能被信任.为了弥补这个缺陷,安全策略经常要求在应用程序 ...
- React-native APK打包
安卓相关工具配置到环境变量,这样可以将安卓相关工具可以直接在cmd命令中调用 1 检查gradle版本 查看里面对应的编译工具版本号,如果提示版本不对你,那么直接去更新android sdk,相关的s ...
- linux 下svn忽略文件
假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录),如果报错请看下面 3. 打开的文件就是忽 ...
- 【开发工具IDE】Eclipse相关配置
1. 修改workspace编码为UTF-8 1.1. 修改jsp编码为UTF-8 2. 修改字体 3. 添加系统中的JDK 4. 导入formatter模板 5. 修改maven配置文件 打开文件: ...
- BZOJ3622 已经没有什么好害怕的了(动态规划+容斥原理)
显然可以转化为一个阶梯状01矩阵每行每列取一个使权值和为k的方案数.直接做不可做,考虑设f[i][j]为前i行权值和至少为j,即在其中固定了j行选1的方案数.设第i行从1~a[i]列都是1且a[i]+ ...
- 洛谷 P1715 [USACO16DEC]Lots of Triangles好多三角形 解题报告
P1715 [USACO16DEC]Lots of Triangles好多三角形 题目描述 农民约翰希望通过卖出他拥有的一部分土地来增加收入.他在这片土地上种了\(N\)棵树(\(3\le N\le ...
- Kerberos的黄金票据详解
0x01黄金票据的原理和条件 黄金票据是伪造票据授予票据(TGT),也被称为认证票据.如下图所示,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信.由于黄金票据是伪造的TGT,它作为TGS- ...
- 安装svn测试环境
centos 6.5 web service模式 安装svn测试服务器 1 下载subversion shell>yum install subversion 2 查看安装的版本 [root@c ...
- 解题:AHOI 2005 航线规划
题面 这种不断删边的首先肯定想到时光倒流啊=.= 在最后剩下的连通图上跑出一棵搜索树,先将边权都赋为$1$,那么两点间的关键航线就是链上边权和,而每加入一条非树边$u,v$都会使得$u,v$链上的边的 ...
04.XML & JSON.pdf