数据解析--JSON & XML

>JSON

是一种轻量级的 数据格式 (就像文档有txt格式  ,有doc格式,JSON是数据的一种表现格式),一般用于数据交互,

服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外,是文件)

JSON的格式很像OC中的数组,字典.标准的JSON格式:key必须用双引号,不推荐单引号

想要从JSON中拿到具体的数据,需要对JSON进行解析.JSON--->OC

>JSON解析方案

      • 在iOS中,JSON的常见解析方案有4种
      • 第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,越差)
      • 苹果原生(自带):NSJSONSerialization(性能最好)
      • NSJSONSerialization的常见方法
      • JSON数据 à OC对象

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;

      • OC对象 à JSON数据

+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;

XML

      • 什么是XML
      • 全称是Extensible Markup Language,译作“可扩展标记语言”
      • 跟JSON一样,也是常用的一种用于交互的数据格式
      • 一般也叫XML文档(XML Document)
      • XML举例

<videos>

<video name="小黄人 第01部" length="30" />

<video name="小黄人 第02部" length="19" />

<video name="小黄人 第03部" length="33" />

</videos>

XML语法

      • 一个常见的XML文档一般由以下部分组成
      • 文档声明
      • 元素(Element)
      • 属性(Attribute)
      • XML语法 – 文档声明
      • 在XML文档的最前面,必须编写一个文档声明,用来声明XML文档的类型
      • 最简单的声明

<?xml version="1.0" ?>

      • 用encoding属性说明文档的字符编码

<?xml version="1.0" encoding="UTF-8" ?>

XML语法 – 元素(Element)

      • 一个元素包括了开始标签和结束标签
      • 拥有元素内容:<video>小黄人</video>
      • 没有元素内容:<video></video>
      • 没有元素内容的简写:<video/>
      • 一个元素可以嵌套若干个子元素(不能出现交叉嵌套)

<videos>

<video>

<name>小黄人 第01部</name>

<length>30</length>

</video>

</videos>

      • 规范的XML文档最多只有1个根元素,其他元素都是根元素的子孙元素
      • XML语法 –元素的注意
      • XML中的所有空格和换行,都会当做具体内容处理
      • 下面两个元素的内容是不一样的
      • 第1个

<video>小黄人</video>

      • 第2个

<video>

小黄人

</video>

XML语法 – 属性(Attribute)

      • 一个元素可以拥有多个属性

<video name="小黄人 第01部" length="30" />

      • video元素拥有name和length两个属性
      • 属性值必须用 双引号"" 或者 单引号‘‘ 括住
      • 实际上,属性表示的信息也可以用子元素来表示,比如

<video>

<name>小黄人 第01部</name>

<length>30</length>

</video>

XML解析

      • 要想从XML中提取有用的信息,必须得学会解析XML
      • 提取name元素里面的内容

<name>小黄人 第01部</name>

      • 提取video元素中name和length属性的值

<video name="小黄人 第01部" length="30" />

      • XML的解析方式有2种
      • DOM:一次性将整个XML文档加载进内存,比较适合解析小文件
      • SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件
      • iOS中的XML解析
      • 在iOS中,解析XML的手段有很多
      • 苹果原生
      • NSXMLParser:SAX方式解析,使用简单
      • 第三方框架
      • libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX方式解析
      • GDataXML:DOM方式解析,由Google开发,基于libxml2
      • XML解析方式的选择建议
      • 大文件:NSXMLParser、libxml2
      • 小文件:GDataXML
      • NSXMLParser
      • 使用步骤

// 传入XML数据,创建解析器

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

// 设置代理,监听解析过程

parser.delegate = self;

// 开始解析

[parser parse];

      • NSXMLParser采取的是SAX方式解析,特点是事件驱动,下面情况都会通知代理
      • 当扫描到文档(Document)的开始与结束
      • 当扫描到元素(Element)的开始与结束
      • NSXMLParserDelegate
      • 当扫描到文档的开始时调用(开始解析)

- (void)parserDidStartDocument:(NSXMLParser *)parser

      • 当扫描到文档的结束时调用(解析完毕)

- (void)parserDidEndDocument:(NSXMLParser *)parser

      • 当扫描到元素的开始时调用(attributeDict存放着元素的属性)

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

      • 当扫描到元素的结束时调用

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

GDataXML使用

    • GDataXML中常用的类
    • GDataXMLDocument:代表整个XML文档
    • GDataXMLElement
    • 代表文档中的每个元素
    • 使用attributeForName:方法可以获得属性值
时间: 2024-08-07 05:24:21

数据解析--JSON & XML的相关文章

数据解析1:XML解析(2)

上一篇着重记录了XML解析中的SAX解析,该篇继续上篇(数据解析1:XML解析(2))未讲完的内容. XML补充: 1. 2. . 3. 示例:使用SAX解析一个比较复杂的XML文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!-- START_DOCUMET:第一个节点 3 END_DOCUMET:尾节点 4 START_TAG:其他的首部的节点 p pn c cn... 5 END_TAG:其他的尾

数据解析1:XML解析(3)

XML解析的第二种方法是PULL解析. PULL解析是以事件常量的的方法进行解析,何为事件常量? 当解析器从头到尾解析XML文件时,解析到文档开头定义为解析到一个常量XmlPullParser.START_DOCUMENT,当解析到开始标签定义为解析到一个常量XmlPullParser.START_TAG,当解析到结束标签定义为解析到一个常量XmlPullParser.END_TAG,当解析到文档结尾定义为解析到一个常量XmlPullParser.END_DOCUMENT. 下面是PULL解析的

数据解析(XML,JSON)

XML文件有多种样式,标准的是把数据存在字节点上,还有的就是把数据直接存储在属性里面 #import"ViewController.h" @interface ViewController ()<NSXMLParserDelegate>{    NSMutableArray * listArr;     NSString      *elementTag;} @end @implementation ViewController - (void)viewDidLoad { 

数据解析之XML和JSON

1. 解析的基本的概念 解析:从事先规定好的格式中提取数据 解析前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JOSN解析 2. XML数据结构 1> 概述 XML:Extensible markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. 2> XML数据格式的功能 数据交换 内容管理 用作配置文件 3> XML数据格式的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点

数据解析1:XML解析(1)

Http网络传输中的数据组织格式主要有三种: 1.HTML方式 2.XML方式 3.JSON方式 其中XML方式的数据解析有三种:DOM解析,SAX解析,Pull解析. 下面主要讲解SAX解析. 因为SAX解析是解析XML格式的数据的,那么首先要大致了解下什么是XML,以及XML数据有什么特点. 下面是一个XML数据文件: 分析:XML文件和HTML文件很相似,都是由标签构成,但是XML比HTML更灵活,XML被称为可扩展性标记语言.其中第一行的是固定的格式,文件主体全部有双标签构成,且标签是自

Android数据解析-JSON解析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集. JSON采用完全独立于语言的文本格式,web开发中这个哥们时常出现在你的程序中,你还不得不解析,一般说到JSON,都会不由自主的对比一下它的前辈XML,XML从设计之初到现在已经有十年的光景,在有些方面的作用已经超出其当时设计XML的初衷,WebService是XML的主要

IOS数据解析JSON

//非原创 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验(点击打开链接).此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便. 从IOS5开始,APPLE提供了对json的原生支持(NSJSONSerialization),但是为了兼容以前的ios版本,可以使用第三方库来解析Json. 本文将介绍To

毕设三 spark与phoenix集成插入数据/解析json数组

需求:将前些日子采集的评论存储到hbase中 思路: 先用fastjson解析评论,然后构造rdd,最后使用spark与phoenix交互,把数据存储到hbase中 部分数据: 1 [ 2 { 3 "referenceName": "Apple iPhone XR 64GB 黑色 移动联通电信4G全网通手机 双卡双待", 4 "creationTime": "2019-04-08 01:13:42", 5 "cont

IOS数据解析之XML

XML 1.定义 指可扩展标记语言() XML HTML XML 传输数据,而非显示数据 XML XML 被设计为具有自我描述性. <?xml version="1.0" encoding="utf-8"?> <Users> <User> <name id = "201502004">张三</name> <age>24</age> </User> &l