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:];
//获取包路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Citys" ofType:@"xml"];
//转化为二进制流
NSData *data = [NSData dataWithContentsOfFile:filePath];
//解析
GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options: 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);
UI学习笔记---第十六天XML JSON解析的更多相关文章
- WP8.1学习系列(第二十四章)——Json解析
.net已经集成了json解析,类名叫DataContractJsonSerializer DataContractJsonSerializer 类型公开以下成员. 构造函数 名称 说明 Da ...
- iOS学习笔记(九)——xml数据解析
在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.KissXML.Tiny ...
- iOS学习笔记(九)—— xml数据解析
在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.KissXML.Tiny ...
- java学习笔记(12) —— Struts2 通过 xml /json 实现简单的业务处理
XML 1.引入dom4j-2.0.0.jar 2.引入jquery-1.8.2.js 3.新建common.js getInfo = function(){ $.post("getXmlA ...
- Java学习笔记(十)——xml
[前面的话] 学习过程中还是效率不够高,老是容易注意力不集中,着急啊.不能在这样了,要好好学习,好好努力. 学习过程中的小知识点总结,基础知识,选择阅读. [xml定义] 定义:可扩展标记语言(英语: ...
- UI学习笔记---第十天UITableView表视图编辑
UITableView表视图编辑 表视图编辑的使用场景 当我们需要手动添加或者删除某条数据到tableView中的时候,就可以使用tableView编辑.比如微信 扣扣中删除和某人的通话 当我们需要手 ...
- ui学习笔记---第十五天数据库
数据库的使用 常见的数据库有MySQL SQL Server SQLite Oralce等 在iOS开发中通常使用SQLite数据库,这是一个轻量级的数据库,可以在火 ...
- UI学习笔记---第十四天数据持久化
一.沙盒机制 每个应用程序位于文件系统的严格限制部分 每个应用程序只能在为该程序创建的文件系统中读取文件 每个应用程序在iOS系统内斗放在了统一的文件夹目录下 沙盘路径的位置 1. 通过Finder查 ...
- Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)
在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...
随机推荐
- CentOS 7.2 安装教程
1.CentOS 7.2 下载 下载地址: http://www.centoscn.com/CentosSoft/iso/2016/0601/7341.html 下载:CentOS-7-x86_64- ...
- ie8解决F12问题
工作中,突然电脑上的ie8按F12掉不出来了,一直显示最小化.于是在网上找了很多方法,按这种方法可以解决问题. 1.cmd+r,输入regedit,调出 注册表编辑器. 2.HKEY_CURRENT_ ...
- if语句使用
package yuan; public class Yuan { public static void main(String[] args) { int a = 1; int b = 8; int ...
- Matlab基础
基本运算: 一,矩阵的生成 clc ; clear all; close all; 1.直接输入 A = [ 1 ,2 ,3,4;2,3,4,5;3,4,5,6] A = 1 2 3 4 2 3 4 ...
- ICTCLA中科院分词工具用法(java)
摘要:为解决中文搜索的问题,最开始使用PHP版开源的SCWS,但是处理人名和地名时,会出现截断人名地名出现错误.开始使用NLPIR分词,在分词准确性上效果要比SCWS好.本文介绍如何在windows系 ...
- Windows8 10设置程序为 系统默认浏览器
从win8 开始,MS修改了文件和协议的关联方式,普通的注册表修改是无效的. 必须使用组策略(group policy )对象GP才行. http://blogs.technet.com/b/mrml ...
- Linux-如何添加路由表
linux下静态路由修改命令方法一:添加路由route add -net 192.168.0.0/24 gw 192.168.0.1route add -host 192.168.1.1 dev 19 ...
- HDU 4085 斯坦纳树
题目大意: 给定无向图,让前k个点都能到达后k个点(保护地)中的一个,而且前k个点每个需要占据后k个中的一个,相互不冲突 找到实现这个条件达到的选择边的最小总权值 这里很容易看出,最后选到的边不保证整 ...
- Javascript 基础--JS函数(三)
一.基本概念:未完成某一个功能的代码(语句,指令)的集合. 二.函数的调用方式: 2.1.函数名(传递参数1,传递参数2) 基本语法 function 函数名(参数列表){ //代码; retur ...
- 2014年2月份第3周51Aspx源码发布详情
NHibernateSample示例源码 2014-2-21 [VS2010]源码描述:NHibernateSample示例源码,利用NHibernate配置数据库相关映射,方便快捷,欢迎感兴趣用户 ...