程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> NSXMLParser(SAX解析)大文件解析

NSXMLParser(SAX解析)大文件解析

編輯:C++入門知識

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----");
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved