NSXMLParser(SAX解析)大文件解析

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----");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值