zoukankan      html  css  js  c++  java
  • iOS- 网络访问JSON数据类型与XML数据类型的实现思路及它们之间的区别

    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

     

  • 相关阅读:
    决策树分类
    集群服务器 获取COOKIE错误
    React 自写Loading
    HTB-靶机-Unattended
    HTB-靶机-LaCasaDePapel
    HTB-靶机-FriendZone
    HTB-靶机-CTF
    HTB-靶机-FluJab
    HTB-靶机-Help
    HTB-靶机-Chaos
  • 原文地址:https://www.cnblogs.com/qingche/p/3506199.html
Copyright © 2011-2022 走看看