用苹果原生自带的NSURLParser解析XML数据:
2015-11-29 15:14
435 查看
今天先来无事,就整理并总结了一下关于XML数据解析,依赖方便自己查阅,二来,对于需要这方法知识给养的同仁提供参考,希望自己所做的这些能够帮到大家:
用苹果原生自带的NSURLParser解析XML数据:1. 先创建一个跟NSData二进制数据相关联的NSXMLParser解析器,并设置解析器的代理为当前控制器,调用parse方法开启解析器
// 发送异步请求
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
// 解析数据
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
// 设置代理
parser.delegate = self;
// 开始解析
[parser parse];
}];
2.遵守代理的协议,并且实现常用的四个方法:
#pragma mask - XML解析器的代理方法
// 开始解析XML文档
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
}
// 结束解析XML文档
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
// 刷新表格
NSLog(@"%@", [NSThread currentThread]);
[self.mytableView reloadData];
}
// 开始解析XML文档中的某个元素
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict
{
// 1.判断是否是根元素 // 一个元素通过NSXMLParser解析后对应为一个字典
if ([elementName isEqualToString:@"videos"]) { // 如果是根元素就直接返回,不解析,
return;
}
// 字典转模型
FZZVideo *viedo = [FZZVideo objectWithKeyValues:attributeDict];
[self.videos addObject:viedo];
}
3.播放视频,只需拿到视频资源的URL包含头文件,
#import <MediaPlayer/MediaPlayer.h>
利用其中的一个类MPMoviePlayerViewController,创建一个对象即可
// 拿到电影的URL
NSURL *url = [NSURL URLWithString:videoPath];
// 创建电影播放器
MPMoviePlayerViewController *vc = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
// 弹出播放器
[self presentViewController:vc animated:YES completion:nil];
利用苹果原生自带的NSXMLParser解析数据时,必须先创建一个NSXMLParser解析器,并利用parse方法开启解析器,设置代理,在代理方法中,会先调用开始解析XML文档这个方法,接着调用开始解析元素的代理方法,解析器会从XML文档的根元素开始解析,在一个接着一个解析子元素,每一个子元素被解析完毕后,都对应这一个字典,这时我们把它转变为模型并存进数组即可,当子元素解析完时,调用元素解析完毕这个代理方法, 最后调用文档解析完毕这个代理方法,一般我们会在文档解析完毕后做一些刷新UI的操作.
相关文章推荐
- cpu二级缓存和一级缓存详解及区别(图解)
- 从画图板谈面向对象
- 盒子游戏
- 异常机制及其处理
- 学习心得与写博计划
- (二)Get start with Arduino for windows【The Arduino Platform and C Pro】
- GNU Radio中的数据元(Metadata)
- 路由交换
- Oracle Memory Troubleshooting, Part 4: Drilling down into PGA memory usage with V$PROCESS_MEMORY_DET
- 【openjudge】股票买卖
- 大数的加减乘除
- 分类算法
- 每个程序员都应该了解的 CPU 高速缓存
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(三):素材最终解决方法
- vs调试中右键"设置下一语句"和"运行到光标处"的用法
- 编译原理(七) 算符优先分析法(构造算符优先关系表算法及C++实现)
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(三):素材最终解决方法
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(三):素材最终解决方法
- 信息安全系统设计基础实验四—20135215黄伟业20135222胡御风
- 英语四级-面对让我备受挫折、不断回避、留有心结的考验