• UI学习笔记---第十六天XML JSON解析


    一.解析的基本概念

    从事先规定好的格式中提取数据

    解析的前提:提前约定好格式.数据提供方按照格式提供数据,数据方按照格式获取数据

    常见解析方式XML解析JSON解析

    二.XML:可扩展标记语言

    XML数据格式的功能:数据交换 web服务  内容管理  用作配置文件

    一对标签称为一个节点  节点可以包含节点   没有子节点叫叶子节点  只有一个根节点  节点可以相互嵌套

    三.进行XML解析时使用到的SAX工具

    SAX:Simple API for XML  基于事件驱动的解析方式,逐行解析数据.(采用协议回调机制)

    NSXMLParser类

    NSXMLParser是iOS自带的XML解析类,采用SAX方式解析数据

    解析过程由NSXMLParserDelegate协议方法回调

    解析过程:开始标签->取值->结束标签->开始标签->取值->结束标签...

    四.进行XML解析时使用到得DOM工具

    DOM解析:Document Object Model (文档对象模型)解析时需要将XML文件整体读入,并将XML结构化成树状使用时再通过树状结构读取相关数据

    以栈的方式解析数据

    GDataXMLNode是Google提供的开源XML解析类,对libxml2.dylib进行了Objective-C的封装

    采用DOM方式解析数据

    iOS中包含一个C语言的动态链接库 libxml2.dylib,解析速度比NSXMLParser快

        _dict = [[NSMutableDictionary alloc] initWithCapacity:5];
        //获取包路径
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Citys" ofType:@"xml"];
        //转化为二进制流
        NSData *data = [NSData dataWithContentsOfFile:filePath];
        //解析
        GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
        //根节点
        GDataXMLElement *root = document.rootElement;
        NSMutableArray *arr1 = [[NSMutableArray alloc] initWithArray:[root nodesForXPath:@"province1/city" error:nil]];
        NSMutableArray *arr2 = [[NSMutableArray alloc] initWithArray:[root nodesForXPath:@"province2/city" error:nil]];
        
        [_dict setObject:arr1 forKey:@"河南"];
        [_dict setObject:arr2 forKey:@"河北"];

    五.JSON数据结构

    Javascript Object Notation 轻量级的数据交换格式.采用完全独立于语言的文本格式,被称为理想的数据交换语言

    数据类型:字符串. 数字 BOOL 字典 数组

    字典:以"{"开始以"}"结束,中间是字典的键值对,键和值中间用":"隔开,多个键值对之间用","隔开

    数组:以"["开始,以"]"结束,中间是数据.数据以","分隔

    [{"name":"李四","sex":"男","age":"20"},{"name":"张三","sex":"女","age":"23"}]

    JSON数据结构的功能;数据交换 内容管理 配置文件

    六使用JSONKit进行JSON解析

    JSONDecoder对象的作用

    NSString(JSONKitDeserializing)类目的作用

    NSData(JSONKitDeserializing)类⺫的作⽤

    NSString(JSONKitSerializing)类目的作用

    NSArray(JSONKitSerializing)类⺫的作⽤

    NSDictionary(JSONKitSerializing)类⺫的作用

    七.使用Foundation进行JSON解析

    NSJSONSerialization

        //JSON文件路径

        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Students" ofType:@"json"];

        //转换二进制流

        NSData *data = [NSData dataWithContentsOfFile:filePath];

        //解析

        NSMutableArray *arr = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

        NSLog(@"%@",arr);

  • 相关阅读:
    BZOJ 2957: 楼房重建
    那些年犯下的逗比错误
    BZOJ 2165: 大楼
    BZOJ 2115: [Wc2011] Xor
    bzoj 2006 [NOI2010]超级钢琴——ST表+堆
    bzoj 4571 [Scoi2016]美味——主席树
    bzoj 1014 [JSOI2008]火星人prefix——splay+哈希
    bzoj 2962 序列操作——线段树(卷积?)
    CF 809D Hitchhiking in the Baltic States——splay+dp
    bzoj 3489 A simple rmq problem——主席树套线段树
  • 原文地址:https://www.cnblogs.com/limicheng/p/3881123.html
Copyright © 2020-2023  润新知