1.XML解析之DOM解析

需要用到libxml2.dylib框架 和GDataXMLNode工具

DOM是基于内存的,不管文件有多大,都会将所有的内容预先装载到内存中。从而消耗很大的内存空间。DOM可以读取XML也可以向XML文件中插入数据,而SAX却只能对XML进行读取,而不能在文件中插入数据

 //获取XML文件路径NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Teacher" ofType:@"xml"];//从文件路径中提取文档数据NSData *data = [NSData dataWithContentsOfFile:filePath];//这行代码执行完之后,我们队xml文档的解析已经成功了,在document中保存的是xml文档的版本号,编码格式,根节点,叶节点等所有文档信息,我们想要的数据,只要对document进行处理就可以拿到GDataXMLDocument *document = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];//XML数据的读取是以栈的形式管理的//从xml格式的数据获取模型的方法/*for (GDataXMLElement *element in array) {Person *person = [[Person alloc] init];for (GDataXMLElement *element1 in [element children]) {[person setValue:[element1 stringValue] forKey:[element1 name]];}[mArr addObject:person];}/*//获取瘪犊子//1,在document找到根节点对象GDataXMLElement *root = document.rootElement;//获取根节点下所有的子节点对象NSArray *array = [root children];//获取目标数据所在的节点对象GDataXMLElement *teacher = [array objectAtIndex:1];//获取目标对象的所有子节点NSArray *arr = [teacher children];//取出结果NSLog(@"%@",[arr[0] stringValue]);*//*//获取瘪犊子//第二种GDataXMLElement *root = document.rootElement;NSArray *array = [root elementsForName:@"Teacher"];NSLog(@"array is %@",array);NSArray *arr = [array[1] elementsForName:@"name"];NSLog(@"%@",[arr[0] stringValue]);*//*//获取瘪犊子//第三种(通过节点路径找到具体某个内容)//(1)从document触发,绝对路径NSArray *array = [document nodesForXPath:@"Teachers/Teacher/name" error:nil];NSLog(@"%@",[array[1] stringValue]);//(2)从根节点出发NSArray *array1 = [document.rootElement nodesForXPath:@"Teacher/name" error:nil];NSLog(@"%@",[array1[1] stringValue]);//(3)从document出发,相对路径NSArray *array2 = [document nodesForXPath:@"//name" error:nil];NSLog(@"%@",[array2[1] stringValue]);*/

2.XML解析之SAX解析

采用协议回调机制,逐行进行解析

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Teacher" ofType:@"xml"];NSData *data1 = [NSData dataWithContentsOfFile:path];NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data1];//既然SAX解析是基于时间回调机制的,所以需要指定解析器的代理//实现代理方法parser.delegate = self;[parser parse];NSLog(@"%@",document);//开标签--内容--闭标签--内容--开标签--内容--闭标签//遇见开标签执行的方法
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{NSLog(@"%@的开标签",elementName);
}//遇见节点携带的内容是执行的方法
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{NSLog(@"%@",string);}//遇见闭标签是执行的方法
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{NSLog(@"%@的闭标签",elementName);}

3.JSON数据解析

//获取文件路径NSString *filePath = [[NSBundle mainBundle] pathForResource:@"movie" ofType:@"txt"];//获取数据NSData *data = [NSData dataWithContentsOfFile:filePath];
//    self.dataArray = [NSMutableArray arrayWithCapacity:0]; //用懒加载代替//开始解析(最外面是声明就用什么接收)NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil];for (NSDictionary *dic in array) {NSArray *resultArray = dic[@"data"];NSMutableArray *mArr = [NSMutableArray arrayWithCapacity:0];for (NSDictionary *dictionary in resultArray) {Movie *movie = [[Movie alloc] init];[movie setValuesForKeysWithDictionary:dictionary];[mArr addObject:movie];}[self.dataDic setObject:mArr forKey:dic[@"title"]];}NSLog(@"dataDic is %@",self.dataDic);

转载于:https://www.cnblogs.com/w150385/p/5251877.html

iOS进阶(XML、JSON数据解析)相关推荐

  1. iOS开发——XML/JSON数据解析

    NSJSONSerialization 接下来就正式开始.苹果官方给出的解析方式是性能最优越的,虽然用起来稍显复杂. 首先我们在上面已经有了我希望得到的信息的网站的API给我们的URL,在OC中,我要 ...

  2. java数组里套数组_用JAVA进行Json数据解析(对象数组的相互嵌套)

    这段时间我们在做一个英语翻译软件的小小小APP,涉及到了对Json数据的解析,所以特地来总结一下! 假设我们要对如下数据进行解析,其实在平时,返回的Json数据是很乱的,很难分清数据的关系,这是经过相 ...

  3. spark中读取json_【spark】文件读写和JSON数据解析

    1.读文件 通过 sc.textFile("file://")方法来读取文件到rdd中. val lines = sc.textFile("file://")/ ...

  4. linux下json数据解析,JSON数据解析 - iOS学习笔记_Linux编程_Linux公社-Linux系统门户网站...

    在之前的<iOS学习--xml数据解析(九)>http://www.linuxidc.com/Linux/2014-02/97020p9.htm 介绍了xml数据解析,这一篇简单介绍一下J ...

  5. 在线解析xml,json数据的网址

    在线解析xml,json数据的网址 https://www.sojson.com/yasuoyihang.html

  6. Android学习笔记44:JSON数据解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种理想的数据交换格式. 本文将主要介绍在Android ...

  7. Android json数据解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  8. Linux7081端口,bash,linux_利用shell将json数据解析后排序问题,bash,linux,ubuntu,json - phpStudy...

    利用shell将json数据解析后排序问题 最近在写一个模仿dropbox_uploader的百度网盘的shell脚本.通过调用pcs的api返回一个目录下的所有文件.返回的json数据如下: {&q ...

  9. 基于QT的【第一个项目】设计+所有组件配合使用+网络编程局域网通信+文件IO操作+登录界面和头像+多界面跳转+JSON数据解析+表情包制作

    基于QT的第一个项目+所有组件配合使用+网络编程局域网通信+文件IO操作+登录界面和头像+多界面跳转+JSON数据解析+表情包制作 第一阶段 网络编程局域网TCP/IP聊天QT实现 main.c ma ...

最新文章

  1. **IOS:xib文件解析(xib和storyboard的比较,一个轻量级一个重量级)
  2. SQL2005的安装
  3. Windows的设备驱动框架
  4. Spring Boot怎么样注册Servlet三大组件[Servlet、Filter、Listener]
  5. C# 2.0 套接字编程实例初探
  6. SAP Cloud for Customer 标准培训课程
  7. 快餐文化短视频源码行业竞争激烈,短视频发展任重道远
  8. 关于“工作组管理员”
  9. MFC开发——MFC项目创建
  10. 项目管理第九章项目资源管理
  11. u深度重装系统详细教程_u深度u盘装系统教程|u深度怎么装系统详细步骤
  12. 【分布式机器学习】基本知识
  13. 计算机主机进水无法启动,笔记本电脑进水后出现不能正常开机启动
  14. RedHat认证笔记-RH124
  15. 神经网络井字棋AI对战版的开发与测试
  16. 星星之火-9:详解信道特性与奈奎斯特定理和香农定理
  17. 《关爱码农成长计划》第一期报告
  18. Golang:实现断点续传(http单线程下载文件)
  19. java手机appium的move方法_appium移动自动化详解
  20. 华硕笔记本r414u怎么安装键盘_华硕r414uv7200笔记本安装win7系统操作教程

热门文章

  1. java gc回收算法_Java基础之GC垃圾回收的历史
  2. python编程技术总结_Python面向对象编程(OOP)技术总结
  3. XML 文档结构必须从头至尾包含在同一个实体内
  4. Socket 实例之透析java,C#的互操作
  5. php获取页面跳转后的页面内容,搜狗-PHP获取抓取页面获得跳转后的URL
  6. mysql-8.0.14zip怎么使用_mysql 8.0.14 安装配置方法图文教程(通用)
  7. 全民一起玩python课件_全民一起玩Python课基础+提高篇[免费学习]
  8. 怎么用python将日期转化为数字_python实现将中文日期转换为数字日期
  9. flowable工作流 流程变量_信也科技工作流平台的技术实践
  10. windows一键安装oracle,Oracle在Windows下快速搭建