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。

时间: 2024-10-25 14:50:16

JSON & XML 简析的相关文章

简析Spring MVC 数据解析

简析Spring MVC 数据解析 特别说明:本文使用spring 版本为 4.1.3 常用数据提交方式: 1. form 表单提交数据 1.1 解析form表单数据(无图片等数据) 前端代码事例: <form action="test/entity" method="post"> 用户ID:<input type="text" name="userid"/><br> 用户名:<inp

AFNetworking封装思路简析

http://blog.csdn.net/qq_34101611/article/details/51698473 一.AFNetworking的发展 1. AFN 1.0版本 AFN 的基础部分是 AFURLConnectionOperation,一个 NSOperation 子类,实现了 基于NSURLConnection 相关的delegate+blocks,网络部分是由 NSURLConnection 完成,然后利用 NSOperation 的 state(isReady→isExecu

web应用构架LAMT及tomcat负载简析

Httpd    (mod_jk.so) workers.properties文件 uriworkermap.properties文件 <--AJP1.3--> Tomcat  --> jdk 大致流程:apache服务器通过mod_jk.so 模块处理jsp文件的动态请求.通过tomcat worker等待执行servlet/JSP的tomcat实例.使用 AJP1.3协议与tomcat通信.tomcat有借助jdk解析. 负载就是 多台tomcat.共同解析apache发送的jsp请

RecycleView + CardView 控件简析

今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleView的“列表”样式,Support包默认包含了:LinearLayoutManager  横向或纵向的滚动列表. GridLayoutManager  网格列表.StaggeredGridLayoutManager  交错的网格列表. 2.Adapter负责处理RecycleView的数据和样式 3

Android菜单简析02(ContextMenu)

在上一篇文章 Android 菜单简析01(OptionsMenu) 中给大家介绍了OptionsMenu 的使用,这篇接着给大家介绍下ContextMenu 的用法. ContextMenu 简称上下文菜单,通过长按事件响应,有两种响应模式 浮动模式 效果类似弹出的 Dialog,在屏幕的正中央,可以自定义显示的 Menu 以及 MenuItem 的响应 动作模式 通过ActionBar 实现,效果实在 Title 的地方,出现动作条. 特别注意 ContextMenu 的 动作模式 在 An

借助LANMT构架,简析ngnix的使用

LNMP流程图 nginx PHP Mysql Nginx Fastcgi_pass <-FastCGI-> fastcgi-(php-fpm)<->wrapper Php 解析器 (Php.ini) <->mysql fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->wrapper fastcgi-(php-fpm)<->

JDK框架简析--java.lang包中的基础类库、基础数据类型

题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说.还是在一个层级上,它们都是须要被编译成字节码.在JRE中执行的,JDK编译后的结果就是jre/lib下的rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列全部文章基于的JDK版本号都是1.7.16. 源代码下载地址:https://jdk7.jav

简析 .NET Core 构成体系

简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代码开发.部署.运行过程 总结 前文介绍了.NET Core 在整个.NET 平台所处的地位,以及与.NET Framework的关系(原文链接),本文将详细介绍.NET Core 框架的构成和各模块主要功能,以及如何实现跨平台. 上图描述了 .NET Core的系统构成,最上层是应用层,是开发基于UI应用的

Nutch学习笔记——抓取过程简析

Nutch学习笔记二--抓取过程简析 学习环境: ubuntu 概要: Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. 通过nutch,诞生了hadoop.tika.gora. 先安装SVN和Ant环境.(通过编译源码方式来使用nutch) apt-get install ant apt-get install subversion [email protected]:~/data/nutch$ svn co https: