首先,NSXMLParser必须继续NSXMLParserDelegate协议
@interface XMLHelper : NSObject <NSXMLParserDelegate>
首先设置XML数据,并初始化NSXMLParser
- (void)viewDidLoad { NSString *strPathXml = [[NSBundle mainBundle] pathForResource:@"images" ofType:@"xml"]; NSData *xmlData = [[NSData alloc] initWithContentsOfFile:strPathXml]; NSXMLParser *parserXML = [[NSXMLParser alloc] initWithData:xmlData];
[parser setShouldProcessNamespac [parser setShouldReportNamespace [parser setShouldResolveExternal [parser parse]; [super viewDidLoad]; } |
//遍例xml的节点
//当xml节点有值时,则进入此句
//当遇到结束标记时,进入此句
代码示例
1 // 2 // YYViewController.m 3 01-文顶顶客户端 4 5 Created by apple on 14-6-29. 6 Copyright (c) 2014年 itcase. All rights reserved. 7 // 8 9 #import "YYViewController.h" 10 MBProgressHUD+MJ.h 11 YYviodesModel.h 12 YYCell.h 13 #import <MediaPlayer/MediaPlayer.h> 14 YYMoviePlayerViewController.h 15 16 @interface YYViewController ()<NSXMLParserDelegate> 17 @property(nonatomic,strong)NSArray *videos; 18 19 @end 20 21 @implementation YYViewController 22 23 - (void)viewDidLoad 24 { 25 [super viewDidLoad]; 26 去掉下划线 27 self.tableView.separatorStyle=UITableViewCellSeparatorStyleNone; 28 29 [MBProgressHUD showMessage:@"正在努力加载中"]; 30 31 创建路径 32 33 NSString *urlStr=http://192.168.1.53:8080/MJServer/video?type=XML"; 34 NSURL *url=[NSURL URLWithString:urlStr]; 35 36 创建请求 37 NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url];默认为get请求 38 设置最大的网络等待时间 39 request.timeoutInterval=20.0; 40 41 获取主队列 42 NSOperationQueue *queue=[NSOperationQueue mainQueue]; 43 发起请求 44 [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response,NSData *data,NSError *connectionError) { 45 隐藏HUD 46 [MBProgressHUD hideHUD]; 47 if (data) {如果请求成功,拿到服务器返回的数据 48 [self parseXMLData:data]; 49 50 // 解析拿到的数据(JSON方式) 51 NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil]; 52 //// NSArray *array=dict[@"video"]; 53 NSArray *array=dict[@"videos"]; 54 // 55 NSMutableArray *videos=[NSMutableArray array]; 56 for (NSDictionary *dict in array) { 57 YYviodesModel *model=[YYviodesModel viodesModelWithDict:dict]; 58 [videos addObject:model]; 59 } 60 self.videos=videos; 61 62 刷新表格 63 [self.tableView reloadData]; 64 65 }else如果请求失败,没有拿到数据 66 { 67 [MBProgressHUD showError:网络繁忙,等稍后再试! 68 } 69 }]; 70 } 71 72 /** 73 * 解析XML数据 74 */ 75 -(void)parseXMLData:(NSData *)data 76 { 77 1.创建解析器 78 NSXMLParser *parser=[[NSXMLParser alloc]initWithData:data]; 79 2.设置代理 80 parser.delegate=self; 81 82 3.开始解析 83 [parser parse]; 84 } 85 86 #pragma mark-NSXMLParserDelegate 87 88 *开始解析文档时调用 89 90 -(void)parserDidStartDocument:(NSXMLParser *)parser 91 { 92 NSLog(开始解析文档"); 93 } 94 95 *结束解析文档时调用(解析完毕) 96 97 -(void)parserDidEndDocument:(NSXMLParser *)parser 98 { 99 NSLog(结束解析文档100 } 101 102 *解析到一个元素的开头时调用 103 104 -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 105 { 106 NSLog(解析到一个元素的开头---%@",elementName); 107 } 108 109 *解析到一个元素的结尾时调用 110 111 -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 112 { 113 NSLog(解析到一个元素的结尾---%@114 } 115 #pragma mark-数据源方法 116 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 117 { 118 return 1; 119 } 120 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 121 { 122 return self.videos.count; 123 } 124 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 125 { 126 YYCell *cell=[YYCell cellWithTableView:tableView]; 127 获取数据模型 128 cell.model=self.videos[indexPath.row]; 129 return cell; 130 } 131 132 设置cell的行高 133 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 134 { 135 70; 136 } 137 138 播放视频 139 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 140 { 141 取出数据模型 142 YYviodesModel *model=self.videos[indexPath.row]; 143 144 创建视屏播放器 145 MPMoviePlayerController 可以随意控制播放器的尺寸 146 MPMoviePlayerViewController只能全屏播放 147 148 NSString *url = [NSString stringWithFormat:http://192.168.1.53:8080/MJServer/%@149 NSURL *videoUrl=[NSURL URLWithString:url]; 150 YYMoviePlayerViewController *movieVc=[[YYMoviePlayerViewController alloc]initWithContentURL:videoUrl]; 151 弹出播放器 152 [self presentMoviePlayerViewControllerAnimated:movieVc]; 153 UIApplicationDidEnterBackgroundNotification 154 } 155 156 157 @end
打印查看