您的位置:首页 > 移动开发 > IOS开发

IOS中XML大文件解析

2015-03-24 10:16 357 查看
//

// KevinTableViewController.m

// 03-我的播放器

//

// Created by Kevin1 on 15/3/22.

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

//

#import "KevinTableViewController.h"

#import "MBProgressHUD+MJ.h"

#import "KevinVideo.h"

#import "UIImageView+WebCache.h"

#import <MediaPlayer/MediaPlayer.h>

#define KVUrl(path) [NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.1.100:8080/MJServer/%@",path]];

@interface KevinTableViewController ()<NSXMLParserDelegate>

@property(nonatomic,strong)NSMutableArray *videos;

@end

@implementation KevinTableViewController

-(NSMutableArray *)videos

{

if (!_videos) {

self.videos=[[NSMutableArray alloc]init];

}

return _videos;

}

- (void)viewDidLoad

{

[super viewDidLoad];

//创建URL

// NSURL *url=[NSURL URLWithString:@"http://192.168.1.100:8080/MJServer/video"];

NSURL *url=KVUrl(@"video?type=XML");

//创建请求

NSURLRequest *request=[NSURLRequest requestWithURL:url];

//发送请求

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response ,NSData *data,NSError *connerctionError)

{

if (connerctionError||data==nil) {

UIAlertView *alterView=[[UIAlertView alloc]initWithTitle:@"网络错误" message:@"请检查网络是否连接正常" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil ];

return ;

}

//XML解析parser

//XML解析 SAX 逐个元素往下解析

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

//设置代理

parser.delegate=self;

//开始解析

[parser parse];

[self.tableView reloadData];

}];

//创建URL

}

#pragma mark -NSXMLParser的代理方法

//解析到文档的开头调用

-(void)parserDidStartDocument:(NSXMLParser *)parser

{

NSLog(@"parserDidStartDocument");

}

/*

解析到一个元素的开始调用

elementName 元素字典

attributeDict 属性字典

*/

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

{

NSLog(@"parser didStartElement:%@",elementName);

if ([@"videos" isEqualToString:elementName])

return;

KevinVideo *video=[KevinVideo videoWithDict:attributeDict];

[self.videos addObject:video];

}

/*

解析到一个元素的结束调用

elementName 元素字典

*/

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

{

NSLog(@"parser didEndElement:%@",elementName);

}

//解析到文档的结尾调用

-(void)parserDidEndDocument:(NSXMLParser *)parser

{

NSLog(@"parserDidEndDocument");

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return self.videos.count;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *ID=@"video";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID ];

if (!cell) {

cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];

}

KevinVideo *video=self.videos[indexPath.row];

//显示视频名称

cell.textLabel.text=video.name;

//显示视频时长

cell.detailTextLabel.text=[NSString stringWithFormat:@"时长:%d分钟",video.length];

//显示视频截图

// NSString *imageurl=[NSString stringWithFormat:@"http://192.168.1.100:8080/MJServer/%@",video.image];

//

// NSURL *url=[NSURL URLWithString:imageurl];

NSURL *url=KVUrl(video.image);

[cell.imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"Default"]];

return cell;

}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

KevinVideo *video=self.videos[indexPath.row];

// NSString *videourl=[NSString stringWithFormat:@"http://192.168.1.100:8080/MJServer/%@",video.url];

// NSURL *url=[NSURL URLWithString:videourl];

NSURL *url=KVUrl(video.url);

MPMoviePlayerViewController *playerVc=[[MPMoviePlayerViewController alloc]initWithContentURL:url];

[self presentViewController:playerVc animated:YES completion:nil];

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: