ios之json,xml解析
JSON解析步骤:
1.获取json文件路径
- NSString*path = [[NSBundle mainBundle] pathForResource:@"Teacher"ofType:@"json"];
2.读取文件中的data
- NSData *data = [NSData dataWithContentsOfFile:path];
3.把data转化为可变数组或者可变字典 是字典还是数组要看json最外层数据是什么.NSJSONSerialization是重点
- NSError *error = nil;
- NSMutableArray*dataArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainerserror:&error];
首
先导入头文件 JSONKit中有objectFromJSONData方法 这个方法是里添加了各种类目 类目的作用是 一个UIData类型的对象
调用该方法后 会返回一个你里面是什么容器 返回就是什么容器的对象 调用之后返回的是一个数组类型的对象 而这个数组中存放的就是json文件中的内容
xml解析文件
SAX逐行解析数据 (采用协议回调机制)
解析过程由NSXMLParserDelegate协议⽅方法回调
解析过程:开始标签->取值->结束标签->取值
思考:1.从什么位置初始化装model得数组
2.从什么位置初始化model 从什么位置可以拿出数据
3.从什么位置给model赋值
4.从什么位置可以打印到数组
- - (void)parserDidStartDocument:(NSXMLParser *)parser
- {
- // 初始化数组
- self.dataArray = [NSMutableArray array];
- NSLog(@"已经开始分析文件");
- }
- - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
- {
- // 初始化model
- if ([elementName isEqualToString:@"Student"]) {
- self.model = [[StudentModel alloc] init];
- }
- NSLog(@"<%@>", elementName);
- // NSLog(@"开始遇到节点");
- }
- - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
- {
- // 保存字符串
- self.string = string;
- //NSLog(@"发现字符");
- NSLog(@"%@", string);
- }
- - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
- {
- // 给model赋值
- if ([elementName isEqualToString:@"name"]) {
- self.model.name = self.string;
- } else if ([elementName isEqualToString:@"gender"]) {
- self.model.gender = self.string;
- } else if ([elementName isEqualToString:@"age"]) {
- self.model.age = self.string;
- } else if ([elementName isEqualToString:@"motto"]) {
- self.model.motto = self.string;
- } else if ([elementName isEqual;ldghToString:@"Student"]) {
- // 节点名字等于Student的时候一个model就赋值完成了 可以装进数组中
- [self.dataArray addObject:self.model];
- [_model release];
- }
- NSLog(@"遇到结束节点触发");
- NSLog(@"</%@>", elementName);
- }
- - (void)parserDidEndDocument:(NSXMLParser *)parser
- {
- NSLog(@"%@", self.dataArray);
- NSLog(@"已经结束分析文件");
- }
现在一般多使用json解析.
ios之json,xml解析的更多相关文章
- iOS学习——JSON数据解析(十一)
在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...
- iOS学习—JSON数据解析
关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如TouchJson,JSONKit,SBJon等,自从iOS5.0以后,苹果SDK推出了自带的JSON解决方案NSJSONSer ...
- iOS 中的 xml 解析
在ios 中解析xml 的方法有很多种 1.苹果原生 NSXMLParser:SAX方式解析,使用简单 2.第三方框架 libxml2:纯c语言,默认包含在ios sdk中,同时支持DOM 和 SA ...
- iOS 中的XML解析代码(SAX)
1.XML解析(SAX) NSXMLParser SAX 大文件 1)打开文档 - (void)parserDidStartDocument:(NSXMLParser *)parser 2)开始查找起 ...
- iOS下json的解析 NSJSONSerialization
- (IBAction)JOSNButtonPressed:(id)sender { NSString *str=[@"http://douban.fm/j/mine/playlist? ...
- IOS中的XML解析之DOM和SAX
一.介绍 dom是w3c指定的一套规范标准,核心是按树形结构处理数据,dom解析器读入xml文件并在内存中建立一个结构一模一样的“树”,这树各节点和xml各标记对应,通过操纵此“树”来处理xml中的文 ...
- iOS开发笔记3:XML/JSON数据解析
这篇主要总结在iOS开发中XML/JSON数据解析过程用到的方法.XML数据解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON数据解析主要使用NSJSONSeri ...
- iOS - - JSON 和 XML解析
JSON 和 XML 一.JSON 1.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) 2.JSON的格 ...
- IOS-网络(JSON解析数据与XML解析数据)
一.JSON解析数据 // // VideoModel.h // IOS_0130_网络视频 // // Created by ma c on 16/1/30. // Copyright © 2016 ...
随机推荐
- 【原】iOS学习44之动画
1. 简单动画 1> UIImageView GIF 动画 GIF图的原理是:获取图片,存储在图片数组中,按照图片数组的顺序将图片以一定的速度播放 UIImageView *showGifima ...
- 【原】iOS学习之KVC原理
1. KVC的实现原理 遍历字典里面所有的key,以name为例 去模型中查找有没有setName:方法,有就直接调用赋值 假如没有找到setName:方法,就会继续查找有没有_name属性,有就_n ...
- Storm可靠性实例解析——ack机制
对于Storm,它有一个很重要的特性:“Guarantee no data loss” ——可靠性 很显然,要做到这个特性,必须要track每个data的去向和结果.Storm是如何做到的呢——ack ...
- Codeforces Round #248 (Div. 2) B. Kuriyama Mirai's Stones
题目简单描述就是求数组中[l,r]区间的和 #include <iostream> #include <vector> #include <string> #inc ...
- Linux 日常维护命令
1 防火墙配置 1)重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 或者 /sbin/chkconfig --level ...
- BZOJ4454: C Language Practice
Description Input 第一行输入一个正整数T(T<=85),表示测试数据的组数. 每组数据第一行包含两个正整数n,m(1<=n,m<=2000),表示序列的长度. 第二 ...
- 主席树+启发式合并(LT) BZOJ3123
好久没做题了,写道SBT又RE又T 查询:主席树裸题. 修改:对于两个树合并重建小的树. 注意fa[x][i]重新计算时要清空 #include<cstdio> #include<c ...
- 配置1000条ACE的脚本
配置1000条ACE的脚本 测试 python 引言 在路由器或者交换机产品中,手工配置大量shell命令时,难免繁琐且效率低下,鉴于CRT中支持多种脚本语言,因此可通过脚本执行大量重复的shell配 ...
- Java_动态加载
Java类动态加载(一)——java源文件动态编译为class文件最近在做java动态加载这方面的工作,起初也遇到了很多困难.网上关于这方便的东西很零散,为了便于日后回过头来再看,于是我将这几天的心得 ...
- CentOS评估磁盘I/O性能读写极限测试
用一个fio工具 安装 yum -y install fio 二,FIO用法: 随机读:fio -direct=1 -iodepth 1 -thread -rw=randread -ioengine ...