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
0 0
原创粉丝点击