NSXMLParser(SAX解析)大文件解析

来源:互联网 发布:数据挖掘导论课后答案 编辑:程序博客网 时间:2024/06/05 07:44

NSXMLParser(SAX解析)大文件解析

- (void)viewDidLoad
{
    [

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

#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 = [HMVideovideoWithDict:attributeDict];
    [
self.videosaddObject: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