//
// ViewController.h
// 数据解析XML,JSON
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import
@interface ViewController : UIViewController
@end
//
// ViewController.m
// 数据解析XML,JSON
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import "ViewController.h"
#import "ParserXML.h"
#import "Student.h"
#import "DOMXML.h"
#import "movie.h"
@interface ViewController ()
//可视化编程//
// movie.h
// 数据解析XML,JSON
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import
@interface movie : NSObject
@property(nonatomic,copy)NSString *movieName;
@property(nonatomic,copy)NSString *movieId;
@property(nonatomic,copy)NSString *pic_url;
@end
//
// movie.m
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import "movie.h"
@implementation movie
-(void)dealloc{
[_movieId release];
[_movieName release];
[_pic_url release];
[super dealloc];
}
- (void)setValue:(id)value forUndefinedKey:(NSString *)key{
}
@end
安逸臣
22
男
玩
宁致远
23
男
玩
安乐颜
22
女
玩
小雅惠子
23
女
玩
//
// ParserXML.h
// UI13_数据解析XML,JSON
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import
#import "Student.h"
@interface ParserXML : NSObject
//用一条属性,数组,来装所有的解析好的model对象
@property(nonatomic,retain)NSMutableArray *stuArr;
//临时保存节点的字符串
@property(nonatomic,copy)NSString *tempStr;
//给一个开始解析的方法
- (void)startParser;
//把解析写成加号方法..
//+(NSMutableArray *)paserStart;
@end
//
// ParserXML.m
// UI13_数据解析XML,JSON
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import "ParserXML.h"
@implementation ParserXML
-(void)dealloc{
[_stuArr release];
[_tempStr release];
[super dealloc];
}
//+(NSMutableArray *)paserStart{
// NSString *path=[[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];
// NSData *data=[NSData dataWithContentsOfFile:path];
// NSXMLParser *paser=[[NSXMLParser alloc] initWithData:data];
// paser.delegate=self;
// [paser release];
//
//
//
//}
- (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 *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
//
// DOMXML.h
// 数据解析XML,JSON
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import
#import "GDataXMLNode.h"
#import "Student.h"
@interface DOMXML : NSObject
+(NSMutableArray *)DOMstart;
@end
//
// DOMXML.m
// 数据解析XML,JSON
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import "DOMXML.h"
@implementation DOMXML
+(NSMutableArray *)DOMstart{
//初始化一个用来装model得容器
NSMutableArray *stuArr=[NSMutableArray array];
NSString *path=[[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];
NSData *data=[NSData dataWithContentsOfFile:path ];
//用第三方进行数据解析
//1.第一个参数是要解析的数据 2.没用 3.错误信息
//错误信息一般设置成nil,但是如果出现错误,nil马上被错误内容替换
GDataXMLDocument *document=[[GDataXMLDocument alloc] initWithData:data options:0 error:nil];
//获取根节点.
GDataXMLElement *rootElement=[document rootElement];
//找到根节点,找到里面的所有的student节点,装在一个数组里..
NSArray *arr=[rootElement elementsForName:@"student"];
//循环遍历所有的股和条件的节点
for(NSInteger i=0;i
//
// Student.h
// 数据解析XML,JSON
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import
@interface Student : NSObject
@property(nonatomic,copy)NSString *sex;
@property(nonatomic,copy)NSString *hobby;
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *age;
@end
//
// Student.m
// 数据解析XML,JSON
//
// Created by dllo on 15/8/14.
// Copyright (c) 2015年 flg. All rights reserved.
//
#import "Student.h"
@implementation Student
-(void)dealloc{
[_age release];
[_name release];
[_hobby release];
[_sex release];
[super dealloc];
}
-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
}
@end
- (IBAction)parserButton:(id)sender;- (IBAction)DOMButton:(id)sender;- (IBAction)jsonButton:(id)sender;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}- (IBAction)parserButton:(id)sender { ParserXML *parser=[[ParserXML alloc] init]; [parser startParser]; //遍历学生的姓名 for (Student *stu in parser.stuArr) { NSLog(@"%@",stu.name); } [parser release];}- (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 *arr=dic[@"result"];// for (NSMutableDictionary *dic1 in arr) {// NSLog(@"%@",dic1[@"movieName"]);// } NSMutableArray *movieArr=[NSMutableArray array]; for (NSMutableDictionary *dic1 in dic[@"result"]) { movie *movie1=[[movie alloc] init]; [movie1 setValuesForKeysWithDictionary:dic1]; [movieArr addObject:movie1]; [movie1 release]; NSLog(@"%@",movie1.movieName); }}@end