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 简析的更多相关文章

  1. JSON.stringify & JSON.parse 简析

    以前用到JSON的场景也不少,但是没有仔细的研究过,这几天趁着一个需求用到了,就整理了一下相关用法. 一. JSON.stringify() 1. 语法  JSON.stringify(value[, ...

  2. AFNetworking封装思路简析

    http://blog.csdn.net/qq_34101611/article/details/51698473 一.AFNetworking的发展 1. AFN 1.0版本 AFN 的基础部分是 ...

  3. 简析.NET Core 以及与 .NET Framework的关系

    简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...

  4. 简析 .NET Core 构成体系

    简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...

  5. RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  6. Android RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  7. SpringMVC源码情操陶冶-DispatcherServlet父类简析

    阅读源码有助于陶冶情操,本文对springmvc作个简单的向导 springmvc-web.xml配置 <servlet> <servlet-name>dispatch< ...

  8. SpringMVC源码情操陶冶-DispatcherServlet类简析(一)

    阅读源码有利于陶冶情操,此文承接前文SpringMVC源码情操陶冶-DispatcherServlet父类简析 注意:springmvc初始化其他内容,其对应的配置文件已被加载至beanFactory ...

  9. 0002 - Spring MVC 拦截器源码简析:拦截器加载与执行

    1.概述 Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理.例如通过拦截器可以进行权限验证.记录请求信息的日 ...

随机推荐

  1. 复习之webview(观看张荣超视频)

    webview定义的两张方式: 1,是在xml文件里面进行定义: 2,实在代码里面定义:   3,在webview上显示内容必要的配置:   4常见的设置: 是否支持javascript 是否支持缩放 ...

  2. zencart低版本由php5.2.17升级PHP5.3环境下错误及解决方案

    方法:有错误或者空白先打开错误提示,ftp看cache错误日志 或者 面板查看错误日志,再对比数据库是否正确,可拿脚本看是否能连接 \cp -r  backipmysql/nlbarb_007li/ ...

  3. .NET WinForm程序中给DataGridView表头添加下拉列表实现数据过滤

    转:http://www.cnblogs.com/jaxu/archive/2011/08/04/2127365.html 我们见过Excel中的数据过滤功能,可以通过点击表头上的下拉列表来实现数据的 ...

  4. hdu_3067_小t的游戏(脑洞)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3067 题意:中文,不解释 题解:一看就知道是要找规律的题,都是有循环节的,看代码. #include ...

  5. A框架 第二部 实例化接收到的get类,调用父类抽象方法,自动执行方法call_user_func_array()

    01父类抽象类 abstract.php <?phpabstract class controller_abstract{ protected $app; function __construc ...

  6. LeetCode OJ 292.Nim Gam148. Sort List

    Sort a linked list in O(n log n) time using constant space complexity. 排序问题是我们遇到的一个老问题,从大一开始我们就学习了各种 ...

  7. flash 右键菜单隐藏与修改

    来源:http://blog.sina.com.cn/s/blog_7264c84401014fmd.html import flash.ui.ContextMenu;import flash.ui. ...

  8. Android Studio 如何使用jni

    在project视图下,main文件夹下,创建jniLibs文件夹,然后把so文件放入即可:

  9. Linux系统的时区和时间调整

     linux调整系统时区: 1)tzselect命令 找到相应的时区文件/usr/share/zoneinfo/Asia/Shanghai,用这个文件替换当前的/etc/localtime文件. 或者 ...

  10. 虚拟机centos分区

    在计算机上安装 Linux 系统,对硬盘进行分区是一个非常重要的步骤,下面介绍几个分区方案. 方案 1 / :建议大小在 5GB 以上. swap :即交换分区,建议大小是物理内存的 1~2 倍. 方 ...