IOS中XML大文件解析
来源:互联网 发布:js模块化开发框架 编辑:程序博客网 时间:2024/05/01 03:04
//
// 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
// 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
0 0
- IOS中XML大文件解析
- iOS中xml文件解析
- 【IOS中XML解析】NSXMLParser方法解析XML文件案例
- ios中如何解析xml文件
- ios中如何解析xml文件
- ios中如何解析xml文件
- ios中如何解析xml文件
- IOS解析XML文件
- IOS解析XML文件
- IOS中XML解析之小文件解析
- iOS中XML解析
- ios中xml解析
- iOS中XML解析
- IOS中XML解析
- XML大文件解析[分享]
- XML解析 适合大文件
- 重新再写如何ios中解析xml文件
- 在iOS中 XML文件的解析和写入
- Flex与C#socket通信(二)
- 删除用户的存储过程
- 升级MAC OS X自带的SVN客户端
- 伪造ip发起tcp sync攻击
- 使用命令行刷新Magento索引
- IOS中XML大文件解析
- ZOJ 3714 Java Beans(暴力)
- iOS开发UI篇—UIScrollView控件介绍
- 简析TCP的三次握手与四次分手
- mysql乐观锁总结和实践
- 动态规划(DP)---LCS(the Longest Common Subsequence)
- 实现button的图文并茂
- vc socket tcp编程的简单实例
- Effective C++ 读书笔记之----条款01:视 C++ 为一个语言联邦