1.JSON (基本上移动开发的主要数据传输都是JSON)       

1.1.JSON特点:                                   

a.[] 表示数组

b.{} 表示字典 - 对象模型建立关系

c.应用非常多,基本上移动开发的主要数据传输都是JSON

  d. 读取数据时效率高

  e.在做实现读取数据时,简单便捷

1.2.实现                                        

        

要使用JSON,从网络上获取到数据之后使用:

[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

  可以将网络数据反序列化为字典或者数组,具体转换类型,看JSON最外面的一个括号

2.XML (主要用于上传一些文件,移动开发时用的不多)     

2.1.JSON特点:                                 

*   XML

a. 大,解析费劲

  b. 解析步骤麻烦,效率低下

  c. 直接看XML方便看出数据

2.2.实现                                     

XML解析需要

// 1) 实例化解析器

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];

// 2) 设置代理

parser.delegate = self;

// 3)开始解析

[parser parse];

// 4)调用代理方法

===================================================================

XML解析的六个代理方法

// 1. 开始解析文档,在这里做初始化工作

/**

1. 解析准备工作

- (void)parserDidStartDocument:(NSXMLParser *)parser

2.3.4 三个步骤会循环执行,一直到所有的节点解析完成

2.解析一个节点,即节点中的字典

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

3.负责拼接字符串,查找节点内容,可能会多次

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

4. 节点完成,可以用KVC直接设置对象内容

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

5. 用于收尾工作

- (void)parserDidEndDocument:(NSXMLParser *)parser

6. 解析出错,需要把中间数据清除,以免造成不必要的错误

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError

7.当XML格式如下:

<book pages="12" index="1">

<item id="1558" title="仙逆" tag="玄幻" source="/upload/file/2013_07_4/2013718101155179.zip" author="耳根" updatetime="2013-6-21 11:06:17" summary="仙逆............." clicks="86945" words="" logo="/upload/pic/2013_06_5/20136211172503.png" jx="False" />

</book>

可以将所有的属性设置到一个节点中的属性节点中,如此只需要第二步即可。

                                                清澈Saup

iOS- 网络访问JSON数据类型与XML数据类型的实现思路及它们之间的区别的更多相关文章

  1. iOS网络访问之使用AFNetworking

    AFNetworking是IOS上常用的第三方网络访问库,我们可以在github上下载它,同时github上有它详细的使用说明,最新的AFNetworing2.0与1.0有很大的变化,这里仅对2.0常 ...

  2. QF——网络之JSON解析和XML解析

    JSON解析和XML解析: 用苹果原生的代理方式的网络请求后返回的都是二进制数据(NSData). 若是json,则通过NSJSONSerialization把NSData数据转换为JSON对象. N ...

  3. ios网络访问官方演示程序

    官方演示程序 AppDelegate 设置缓存 NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:4 * 1024 * ...

  4. IOS 网络浅析-(五 xml解析)

    XML 可扩展标记语言 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言 易读性高,编码手写难度小,数据量大 NSXMLPars ...

  5. iOS网络编程解析协议二:XML数据传输解析

    XML两种解析方式,一种是SAX,NSXMLParser是SAX方法解析,另一种是DOM(Document Object Model); 区别: SAX: 只能读,不能修改,只能顺序访问,适合解析大型 ...

  6. IOS网络访问详解

    第一.访问网络的方式 同步请求:数据的请求过程是由主线程发起的,网络加载需要一定的时间,因此会堵塞主线程 异步请求:数据的请求在多线程中完成 同步请求无法取消,异步请求的过程中可以取消,同步请求无法监 ...

  7. mssql sqlserver xml数据类型专题

    摘要: 下文将详细讲述sql server xml数据类型的相关知识,如下所示: 实验环境: sql server 2008 R2 xml数据类型简介: mssql sqlserver xml数据类型 ...

  8. iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)

    一.JSON 1.JSON简介什么是JSONJSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典 ...

  9. iOS网络-02-数据解析(JSON与XML)

    数据交互格式 服务器返回给用户的数据,通常是以下两种方式: JSON XML JSON 一种轻量级的数据数据格式,体积比XML小,是服务器返回给移动端通常采用的格式 用使用JSON文件中的数据,需要对 ...

随机推荐

  1. nginx的docker化部署

    nginx的docker化有一个隐藏的坑,就是其默认的配置目录(/etc/nginx)需要先从容器中拷贝出来. 拉取镜像 docker pull nginx 启动容器 docker run -d -- ...

  2. Git简单配置ssh秘钥

    执行以下命令: git config --global user.name "demo" git config --global user.email "demo@dem ...

  3. YII2集成GOAOP,实现面向方面编程!

    引言: 软件开发的目标是要对世界的部分元素或者信息流建立模型,实现软件系统的工程需要将系统分解成可以创建和管理的模块.于是出现了以系统模块化特性的面向对象程序设计技术.模块化的面向对象编程极度地提高了 ...

  4. Hadoop mapreduce框架简介

    传统hadoop MapReduce架构(老架构)   从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路:   1.首先用户程序 (JobClient) 提交了一个 job,job ...

  5. python学习笔记:第18天 面向对象04-反射

    目录 issubclass和isinstance 区分函数和方法 反射 issubclass和isinstance issubclass:可以判断一个类是否另一个类的子类. # issubclass ...

  6. openwrt从0开始-目录

    终于下定决心把近期的笔记整理一下.涉及到方方面面,记录自己的成长和沉淀自己所学. 预备知识:linux, 网络通信,待补充... 目录: 前言:openwrt简介 1. openwrt源码下载及编译环 ...

  7. Div标签使用inline-block有间距

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 数据结构之栈和队列及其Java实现

    栈和队列是数据结构中非常常见和基础的线性表,在某些场合栈和队列使用很多,因此本篇主要介绍栈和队列,并用Java实现基本的栈和队列,同时用栈和队列相互实现. 栈:栈是一种基于“后进先出”策略的线性表.在 ...

  9. 【blockly教程】第四章 Blockly之选择结构

    今天,我们通过一个游戏来学习选择结构,游戏的地址如下:https://blockly-games.appspot.com/bird?lang=en本游戏分为10关:主要游戏规则如下:①主界面是游戏的运 ...

  10. python2和python3的一些区别

    性能:py3.x起始比py2.x效率低,但是py3.x有极大的优化空间,效率正在追赶. 编码:py3原码文件默认utf-8编码,使得变量名更为广阔. 语法:1,去除了 <>  ,改用了  ...