美文网首页
Senior进阶 网络之数据解析

Senior进阶 网络之数据解析

作者: 孤城99 | 来源:发表于2016-12-19 21:27 被阅读0次

    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是系统提供的解析类,其解析效率是最高的

    相关文章

      网友评论

          本文标题:Senior进阶 网络之数据解析

          本文链接:https://www.haomeiwen.com/subject/yeztvttx.html