JSON & XML 简析
转载自:http://my.oschina.net/aofe/blog/269260
JSON & XML
JSON:
JSON是基于JavaScript的一个子集;
作为一种轻量级的数据交换格式,正在逐步取代XML成为网络数据的通用格式。
缺点:
易读性略差,编码手写难度大,数据量小;
JSON格式取代了XML,给网络传输带来了很大的便利,但是却没有了XML的一目了然,尤其是JSON数据很长的时候,我们会陷入繁琐复杂的数据节点查找中。
XML:
可扩展标记语言;
用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
易读性高,编码手写难度小,数据量大。
在客户端与服务器数据传输过程中,JSON 和 XML都是字符串格式。
JSON格式说明:
对象
{} 格式 {key : value, key : value,...} 的键值对的结构 ;
可以反序列化为OC中的NSDictionary ;
数组
[] 格式 ["java","javascript","vb",...]
可以反序列化为OC中的NSArray ;
JSON的数据格式与OC中的快速包装方法非常类似,JSON的数据格式同样支持嵌套。
JSON的序列化与反序列化;
从 iOS 5 开始,使用NSJSONSerialization对JSON解析。
序列化
|
1
|
[NSJSONSerialization dataWithJSONObject:array options:0 error:NULL]; |
反序列化
|
1
|
[NSJSONSerialization JSONObjectWithData:data options:0 error:NULL]; |
HTML & XML 的对比
HTML:
HTML指的是超文本标记语言[Hyper Text Markup Languaga],是用来描述网页的一种标记语言而不是编程语言;
HTML被设计用来显示数据。
XML:
XML也是一种标记语言,很类似HTML;
XML的设计宗旨是传输和存储数据,而非显示数据。
HTML5新特性:
1> 强化了Web网页的表现性能: 增加了用于绘画的canvas元素,用于媒介播放的video和audio元素等;
2> 追加了本地数据库等Web应用的功能;
3> 广义论及HTML5时,是包括HTML、CSS和JavaScript在内的一套技术组合;
NSXMLParser解析方法:
SAX(Simple API for XML)特点:
1、只能读,不能修改,只能顺序访问,解析速度快;
2、常用于处理大量数据的XML,实现异构系统的数据访问,实现跨平台;
3、从文档的开始通过每一节点移动,定位一个特定的节点。
DOM(Document Object Model)特点:
1、不仅能读,还能修改,而且能够实现随机访问;
2、解析速度慢,适合解析小型文档,一般应用于小型的配置XML,方便操作;
3、为载入到内存的文档节点建立类型描述,呈现可以横向移动,潜在巨大的树型结构;
4、在内存中生成节点树操作代价昂贵。
NSXMLParser解析过程:
实例化NSXMLParser,传入从服务器接收的XML数据 --> 定义解析器代理 --> 解析器解析 --> 通过解析代理方法完成XML数据的解析。
NSXMLParser解析代理方法:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
// 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: |
XML目前应用场景:
XMPP ——即时通讯,KissXML;
RSS (将网站摘要用xml语言描述)目前还有少量的企业在使用;
开源的WebServices,例如天气预报等。
目前移动开发中绝大多数还是使用JSON。
JSON & XML 简析的更多相关文章
- JSON.stringify & JSON.parse 简析
以前用到JSON的场景也不少,但是没有仔细的研究过,这几天趁着一个需求用到了,就整理了一下相关用法. 一. JSON.stringify() 1. 语法 JSON.stringify(value[, ...
- AFNetworking封装思路简析
http://blog.csdn.net/qq_34101611/article/details/51698473 一.AFNetworking的发展 1. AFN 1.0版本 AFN 的基础部分是 ...
- 简析.NET Core 以及与 .NET Framework的关系
简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...
- 简析 .NET Core 构成体系
简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...
- RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
- Android RecycleView + CardView 控件简析
今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...
- SpringMVC源码情操陶冶-DispatcherServlet父类简析
阅读源码有助于陶冶情操,本文对springmvc作个简单的向导 springmvc-web.xml配置 <servlet> <servlet-name>dispatch< ...
- SpringMVC源码情操陶冶-DispatcherServlet类简析(一)
阅读源码有利于陶冶情操,此文承接前文SpringMVC源码情操陶冶-DispatcherServlet父类简析 注意:springmvc初始化其他内容,其对应的配置文件已被加载至beanFactory ...
- 0002 - Spring MVC 拦截器源码简析:拦截器加载与执行
1.概述 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以进行权限验证.记录请求信息的日 ...
随机推荐
- 升级3.2.3后 could not find driver
求解,之前一切正常,升级3.2.3后提示找不到数据库驱动我用的是mysql,也没有设置DB_DSN错误位置FILE: C:\Users\Administrator\workspace\test\Thi ...
- isset() 与 empty() 的区别
PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在 ...
- MC 自己平均
using System; using System.Drawing; using System.Linq; using System.Collections; namespace PowerLang ...
- bower 教程
1.运行 - cmd 2.npm install -g bower 3.文件夹右击git bash here
- 模拟。。。 Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C
题目大意:给你一个n*m的矩阵,再给你一个小球,从(0,0)以sqrt(2)/s的速度向右上角出发,遇到边框会反弹,遇到角落就直接停止,给你一些点,问小球第一次经过这些点所需要的时间. 思路:模拟一下 ...
- 解决scrollview不滚动
scrollView不滚动的时候 试试这个,有时候药到病除:
- h3c dhcp snooping
1. 组网需求Switch B通过以太网端口Ethernet1/1连接到DHCP服务器,通过以太网端口Ethernet1/2.Ethernet1/3连接到DHCP客户端.要求:l与DHCP服务器相连的 ...
- background和background-position相关笔记
background 可在一个声明中设置background-color,background-image,background-repeat,background-attachment,backgr ...
- popoverController(iPad)
一.设置尺寸 提示:不建议,像下面这样吧popover的宽度和高度写死. 1 //1.新建一个内容控制器 2 YYMenuViewController *menuVc=[[YYMenuViewCont ...
- 给Notepad++ 加带图标右键菜单
给Notepad++ 加带图标右键菜单 方式一: 拷贝以下代码建立一个reg文件,替换相关路径,保存,双击运行加入注册表 Windows Registry Editor Version 5.00 [H ...