博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML & JSON---iOS-Apple苹果官方文档翻译
阅读量:4347 次
发布时间:2019-06-07

本文共 2688 字,大约阅读时间需要 8 分钟。

 

技术博客
 
  新浪微博
  
//转载请注明出处--本文永久链接:

本文对应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开始,使用NSJSONSerializationJSON解析
• 其他常见的三种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数 据反序列化NSArrayNSDictionary等对象
• 技巧:
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 

转载于:https://www.cnblogs.com/ChenYilong/p/3498496.html

你可能感兴趣的文章
每天一个JavaScript实例-展示设置和获取CSS样式设置
查看>>
一篇文章教你如何用R进行数据挖掘
查看>>
放松是羽毛球巧发力的秘诀
查看>>
Evaluate Reverse Polish Notation
查看>>
【转载】C++定时器实现
查看>>
MSDN--ASP.NET概述
查看>>
【Lucene4.8教程之一】使用Lucene4.8进行索引及搜索的基本操作
查看>>
jsonp对付同源策略
查看>>
echart地图下钻
查看>>
tensorflow serving 编写配置文件platform_config_file的方法
查看>>
String 的intern() 方法说明
查看>>
java中Token验证
查看>>
javascript date部分
查看>>
防止被坑
查看>>
IC卡的逻辑卡号和市民卡卡号
查看>>
netBeans删除自动生成的函数(有代码删除不了的问题)
查看>>
virtualbox中centos系统配置nat+host only上网
查看>>
Hadoop的运行痕迹
查看>>
caioj1495: [视频]基于连通性状态压缩的动态规划问题:Formula 2
查看>>
2014025680(22)《嵌入式系统程序设计》第三、四周学习总结
查看>>