- (IBAction)parserButton:(id)sender {

parserXML *parser =[[parserXML
alloc] init];

[parser
startParser];

//遍历学生的姓名

for (Student *stu
in parser.stuArr) {

NSLog(@"%@",stu.name);

}

}

- (IBAction)domButton:(id)sender {

NSMutableArray *stuArr =[DOMXML
DOMStart];

for (Student *stu
in stuArr) {

NSLog(@"%@",stu.name);

}

}

- (IBAction)jsonButton:(id)sender {

//对本地数据进行解析

NSString *path=[[NSBundle
mainBundle] pathForResource:@"movielist"
ofType:@"txt"];

NSData *data =[NSData
dataWithContentsOfFile:path];

//第二个參数,指定一个可变的容器来接收解析之后的数据

NSMutableDictionary *dic=[NSJSONSerialization
JSONObjectWithData:data options:NSJSONReadingMutableContainers
error:nil];

NSMutableArray *movieArr =[NSMutableArray
array];

for (NSMutableDictionary *temp
in dic[@"result"]) {

Movie *movie =[[Movie
alloc] init];

[movie setValuesForKeysWithDictionary:temp];

[movieArr
addObject:movie];

[movie
release];

}

}

parserXML.h

#import <Foundation/Foundation.h>

#import "Student.h"

@interface parserXML :
NSObject<NSXMLParserDelegate>

//用一条属性,数组,来装全部解析好的model对象

@property(nonatomic,retain)NSMutableArray *stuArr;

//用来暂时保存节点内容的字符串

@property(nonatomic,retain)NSString *tempStr;

//给一个開始解析的方法

-(void)startParser;

@end

parserXML.m

//

//  parserXML.m

//  UI13_数据解析XML_,JSON

//

//  Created by dllo on 15/8/14.

//  Copyright (c) 2015年 zhozhicheng. All rights reserved.

//

#import "parserXML.h"

@implementation parserXML

-(void)startParser

{

//依据文件名称和类型,获取文件所在路径

NSString *path = [[NSBundle
mainBundle] pathForResource:@"Student"
ofType:@"xml"];

//把路径文件内容转换成NSData对象保存

NSData *data = [NSData
dataWithContentsOfFile:path];

//
创建一个xml的解析工具

NSXMLParser *parser =[[NSXMLParser
alloc] initWithData:data];

//须要设置解析工具的代理人

parser.delegate =self;

//開始解析

[parser
parse];

}

#pragma mark 開始运行协议方法

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

{

//这种方法仅仅要一碰到节点就会自己主动走这种方法

if ([elementName isEqualToString:@"Student"]) {

//当碰到根节点Student,须要对数组进行初始化

self.stuArr =[NSMutableArray
array];

}else
if ([elementName isEqualToString:@"student" ]){

//碰到student,意味着这是一个新的对象,须要创建一个对象来接收数据,而且放到学生数组中

Student *stu=[[Student
alloc] init];

[self.stuArr
addObject:stu];

[stu
release];

}

}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

//
找到节点内容的时候须要调用,须要用一个属性来保存相应节点的内容string

//
保存节点内容

self.tempStr = string;

}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

{

//仅仅要到节点结束就会走这种方法

//没有操作完的对象在数组的最后一位

Student *stu = [self.stuArr
lastObject];

//    if ([elementName isEqualToString:@"name"]) {

//        stu.name =self.tempStr;

//    }

//通过KVC进行赋值

[stu
setValue:self.tempStr
forKey:elementName];

}

@end



iOS UI13_数据解析XML_,JSON的更多相关文章

  1. ios 网络数据下载和JSON解析

    ios 网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍ios中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载 ...

  2. 浅议iOS网络数据解析

    /*------------------------------------ 数据解析: 1.JSON数据 --------------------------------*/ 重点:1.什么是JSO ...

  3. Java数据解析之JSON

    文章大纲 一.JSON介绍二.常见框架介绍与实战三.Studio中GsonFormat插件使用四.项目源码下载(含参考资料)五.参考文档   一.JSON介绍 1. 简介   JSON 的全称是 Ja ...

  4. 利用python将excel数据解析成json格式

    利用python将excel数据解析成json格式 转成json方便项目中用post请求推送数据自定义数据,也方便测试: import xlrdimport jsonimport requests d ...

  5. IOS 请求数据解析 XML 和 JSON

    好久没写文章了,回忆一下以前的内容记录一下吧. 这一段主要接触的就是数据解析,就说一下数据解析 现在数据解析一般解析两种数据 xml 和 JSON 那就从xml解析说起吧 xml解析需要用到一个类 N ...

  6. iOS之数据解析时<null>的处理

    在iOS开发过程中经常需要与服务器进行数据通讯,JSON就是一种常用的高效简洁的数据格式. 问题: 在项目中,一直遇到一个坑的问题,程序在获取某些数据之后莫名崩溃.原因是:由于服务器的数据库中有些字段 ...

  7. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObject public class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mar ...

  8. iOS - Plist 数据解析

    前言 NS_AVAILABLE(10_6, 4_0) @interface NSPropertyListSerialization : NSObject 如果对象是 NSArray 或 NSDicti ...

  9. Unity3d-XML文件数据解析&amp;JSON数据解析

    1.XML文件数据解析:(首先须要导入XMLParser解析器,The latest released download from:http://dev.grumpyferret.com/unity/ ...

随机推荐

  1. hust 1605 - Gene recombination(bfs+字典树)

    1605 - Gene recombination Time Limit: 2s Memory Limit: 64MB Submissions: 264 Solved: 46 DESCRIPTION ...

  2. 如何从sql server导出到csv文件

    如何从sql server导出到csv文件,具体代码如下: private static void WriteHeader(SqlDataReader reader, TextWriter outpu ...

  3. 关于记忆力:遵从一些原则,自省增加经验,there is a way out of almost everything

    年轻人记忆力减退的原因不同于老年人,由疾病所引起的占极少数,一般都是由于学习生活等因素造成精神高度紧张或连续用脑过度使神经疲劳所致. 学会科学的分析和考虑问题的方法,对提高记忆力来说是最为首要的. 保 ...

  4. AC日记——线段树练习4 codevs 4919

    4919 线段树练习4  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 给你N个数,有两种操作 ...

  5. babel6的babel-plugin-add-module-exports插件

    干什么的 在 babel 5 时代, export default {}; 除了会被转译成 exports.default = {};,还会加一句 module.exports = exports.d ...

  6. 微信小程序 使用微信支付功能实现在线订单支付

    以前做过PC页面微信支付,但是这次在小程序 直接调用微信支付功能还是方便很多 先放个微信官方API链接:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_a ...

  7. highcharts中放aqi及6要素,再加上气象5要素的图

    var chart = Highcharts.chart('container', { chart: { zoomType: 'xy' }, title: { text: '东京月平均天气数据' }, ...

  8. Java并发编程实战 读书笔记(一)

    最近在看多线程经典书籍Java并发变成实战,很多概念有疑惑,虽然工作中很少用到多线程,但觉得还是自己太弱了.加油.记一些随笔.下面简单介绍一下线程. 一  线程与进程   进程与线程的解释   个人觉 ...

  9. Akka简介与Actor模型

    Akka是一个构建在JVM上,基于Actor模型的的并发框架,为构建伸缩性强,有弹性的响应式并发应用提高更好的平台.本文主要是个人对Akka的学习和应用中的一些理解. Actor模型 Akka的核心就 ...

  10. Ubuntu 16.04下使用Wine安装正则表达式工具RegexBuddy 4

    说明: 1.使用的Wine版本是深度出品(Deepin),已经精简了很多没用的配置,使启动能非常快,占用资源小. 2.关于没有.wine文件夹的解决方法:在命令行上运行winecfg: 下载: (链接 ...