Senior进阶 网络之数据解析

2016-12-19  本文已影响0人  孤城99

Senior进阶 网络之数据解析

一、解析的基本概念
1.解析:从事先规定好的格式中提取数据
2.解析的前提:提前约定好格式,数据提供方按照格式提供数据、数据获取方则按照格式获取数据
3.iOS开发常见的解析:XML解析、JSON解析
二、XML数据结构
1.XML:Extensible Markup Language (可扩展标记语言),主流数据格式之一,可以用来存储和传输数据。
2.XML数据格式的功能:数据交换、内容管理、用作配置文件。(目前的用法是用作配置文件和格式布局)
3.XML数据结构的语法
    1.声明
    2.节点节点使用一对标签表示:起始和结束标签
    3.根节点是起始节点,只有一个,节点可以嵌套
    4.节点可以有值,存储在一对子标签中

SAX的优势:
1.基于事件驱动的解析方式,
2.逐行解析
3.它只读不可写(只能解析读取)
4.如果是大型数据,推荐使用SAX解析,是因为逐行解析,效率高
三、进行XML数据结构解析时使用到的SAX工具,DOM工具
1.SAX解析:Simple API for XML。基于事件驱动的解析方式,逐行解析数据。(采用协议回调机制)
2.NSXMLParser类
    1.NSXMLParser是iOS自带的XML解析类,采用SAX方式解析数据
    2.解析过程由NSXMLParserDelegate协议方法回调
    3.解析过程:开始标签 --> 取值 --> 结束标签 --> 取值
3.NSXMLParser的初始化、和设置的相关属性、方法
    1.initWithContentsOfURL: ----- 通过NSURL创建解析器
    2.initWithData: ----- 通过NSData创建解析器
    3.setDelegate:  -----为解析器定义委托
    4.parse: ----- 运行解析器
4.NSXMLParserDelegate协议方法
    1.parserDidStartDocument: ----- 报告解析的开始
    2.parser:didStartElement:namespaceURI:qualifiedName:attributes: ----- 发现标签开始的处理函数(即报告元素的开始以及元素的属性)          
    3.parser:foundCharacters: ----- 处理标签包含内容字符 (报告标签的所有或部分内容)
    4.parser:didEndElement:namespaceURI:qualifiedName: ----- 发现标签结束符的处理函数,保存标签各项数据(即报告标签的结束标记)
    5.parserDidEndDocumentp: ----- 报告解析的结束
    6.parser:parserErrorOccurred: ----- 报告不可恢复的解析错误
四、进行XML数据结构解析时使用到的DOM工具
1.DOM:Document Object Model (文档对象模型)。DOM方式解析XML时,读入整个XML文档并构建一个驻留内存的树结构 (节点树),通过遍历树结构可以检索任意XML节点,读取它的属性和值。而且通常情况下,可以借助XPath,直接查询XML节点
2.GDataXMLNode
    1.采用DOM方式解析数据
    2.iOS中包含一个C语言的动态链接库libxml2.dylib(xcode7以后改为libxml2.tbd),解析速度比NSXMLParser快。
    3.GDataXMLNode是Google提供的开源XML解析类,对libxml2.tbd进行了Objective-C的封装,能对较小或中等的xml文档进行读写操作且支持XPath语法。
3.GDataXMLNode使用方法
    1.获取GDataXMLNode.h/m文件,将GDataXMLNode.h/m文件添加到工程中
    2.向工程中增加"libxml2.dylib"动态库
    3.在工程的"Build Settings"页中找到"Header Search Path"项,添加"/usr/include/libxml2".
    4.导入"GDataXMLNode.h"文件到头文件中,如工程能编译通过,则说明GDataXMLNode添加成功。
4.GDataXMLElement类的方法
    1.name ----- 获取标签名
    2.attributeForName ----- 获取属性节点
    3.stringValue ----- 获取标签间的字符串值
    4.rootElement ----- 根节点
五、JSON数据结构
1.JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,易于阅读和编写,同时也易于机器解析和生成。
2.JSON数据结构的语法
    1.JSON文件有两种结构
        对象:"名称/值"对的集合。不同的语言中,它被理解为对象,记录,结构,字典,哈希表,有键列表,或者关联数组。以"{"开始,以"}"结束,是"名称/值"对的集合。名称和值中间用":"隔开。多个"名称/值"对之间用","隔开
        数组:值的有序列表。zai'da'bu'fen'yu'yan'zhong在大部分语言中,它被理解为数组。以"[",yi以"]"结束,中间是数据。数据以","分隔。
3.JSON的数据类型:字符型、数值、BOOL、对象、数组
4.JSON数据结构的功能;数据交换、内容管理、配置文件(和XML基本一样)
六、使用Foundation进行JSON解析
1.NSJSONSerialization
    NSJSONSerialization里面包含了两个方法来通过不同数据形式解析JSON数据
        1.JSONObjectWithData:options:error: ----- 使用缓冲区数据解析JSON
        2.writeJSONObject:toStream:options:error: ----- 使用文件流的形式解析JSON
七、XML与JSON两种数据结构的优缺点
1.XML的优缺点:
    1.优点:
        1.格式统一,符合标准
        2.容易与其它系统进行远程交互,数据共享比较方便
    2.缺点:
        1.XML文件格式文件庞大,格式复杂,传输占用带宽
        2.服务器端和客户端都需要花费大量代码来解析XML,不论服务端还是客户端都使代码变得异常复杂和不容易维护
        3.客户端不同浏览器只见解析XML的方式不一致,需要重复编写很多代码
        4.服务端和客户端解析XML花费资源和时间。
2.JSON优缺点:
    1.优点:
        1.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小
        2.易于解析这种语言
        3.支持多种语言,包括ActionScript、C、C#、ColdFusion、Java、JavaScript、Perl、PHP、Python、Ruby等语言服务器端语言,便于服务器端的解析
        4.因为JSON格式能够直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,但是完成的任务不变,且易于维护
    2.缺点:
        1.没有XML格式这么推广的深入人心和使用广泛,没有XML那么通用性
        2.JSON格式目前在Web Service推广还属于初级阶段
总结
1.数据解析:从某种格式的数据中提取自己所需要的数据
2.主流的数据交换格式有两种:XML和JSON
3.XML解析分为两种:SAX解析和DOM解析
4.XNL解析工具:NSXMLParser、GDataXMLNode、TochXML和KissXML等
5.JSON解析工具:JSONKit、NSJSONSerialization、TouchJSON和SBJSON等,其中NSJSONSerialization是系统提供的解析类,其解析效率是最高的
上一篇下一篇

猜你喜欢

热点阅读