NSXMLParser(SAX解析)大文件解析

本文详细介绍了如何使用NSXMLParser进行大文件解析的过程,包括创建URL、发送请求、XML数据解析以及更新视图等关键步骤,并通过代理方法实现对XML文档的逐级解析。

NSXMLParser(SAX解析)大文件解析

- (void)viewDidLoad
{
    [

{
    [
super viewDidLoad];
   
// 1.创建URL
   
NSURL *url = HMUrl(@"video?type=XML");
   
   
// 2.创建请求
   
NSURLRequest *request = [NSURLRequest requestWithURL:url];
   
   
// 3.发送请求
    [
NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
       
if (connectionError || data == nil) {
            [
MBProgressHUD showError:@"网络繁忙,请稍后再试!"];
           
return;
        }
       
       
// 解析XML数据
       
       
// 1.创建XML解析器 -- SAX -- 逐个元素往下解析
       
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
       
       
// 2.设置代理
        parser.
delegate = self;
       
       
// 3.开始解析(同步执行)
        [parser
parse];
       
       
// 4.刷新表格
        [
self.tableView reloadData];
    }];
}

#pragma mark - NSXMLParser的代理方法
/**
 * 
解析到文档的开头时会调用
 */

- (
void)parserDidStartDocument:(NSXMLParser *)parser
{
//    NSLog(@"parserDidStartDocument----");
}

/**
 * 
解析到一个元素的开始就会调用
 *
 * 
@param elementName   元素名称
 * 
@param attributeDict 属性字典
 */

- (
void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
   
if ([@"videos" isEqualToString:elementName]) return;

   
HMVideo *video = [HMVideo videoWithDict:attributeDict];
    [
self.videos addObject:video];
}

/**
 * 
解析到一个元素的结束就会调用
 *
 * 
@param elementName   元素名称
 */

- (
void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
//    NSLog(@"didEndElement----%@", elementName);
}

/**
 * 
解析到文档的结尾时会调用(解析结束)
 */

- (
void)parserDidEndDocument:(NSXMLParser *)parser
{
//    NSLog(@"parserDidEndDocument----");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值