用苹果原生自带的NSURLParser解析XML数据:

  今天先来无事,就整理并总结了一下关于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 allocinitWithContentURL:url];

// 弹出播放器

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


利用苹果原生自带的NSXMLParser解析数据时,必须先创建一个NSXMLParser解析器,并利用parse方法开启解析器,设置代理,在代理方法中,会先调用开始解析XML文档这个方法,接着调用开始解析元素的代理方法,解析器会从XML文档的根元素开始解析,在一个接着一个解析子元素,每一个子元素被解析完毕后,都对应这一个字典,这时我们把它转变为模型并存进数组即可,当子元素解析完时,调用元素解析完毕这个代理方法, 最后调用文档解析完毕这个代理方法,一般我们会在文档解析完毕后做一些刷新UI的操作.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值