瞭解 解析XML的方法, 是5個代理方法
服務器
1) 開始解析文檔異步
2) 找開始節點ide
3) 找節點之間的內容url
4) 找結束節點spa
5) 結束解析文檔線程
2. 設置代理, 遵照協議, 實現代理方法
代理
3. 開始執行代理的方法,代理的方法中開始解析的code
[parser parse];xml
#import "ViewController.h" @interface ViewController () <NSXMLParserDelegate> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self loadXML]; } //異步請求xml - (void)loadXML { //異步請求服務器的xml文件 NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/videos.xml"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue new] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) { if (connectionError) { NSLog(@"鏈接錯誤 %@",connectionError); return; } // NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; if (httpResponse.statusCode == 200 || httpResponse.statusCode == 304) { //解析數據 NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; //設置代理 parser.delegate = self; //開始執行代理的方法,代理的方法中開始解析的 [parser parse]; }else{ NSLog(@"服務器內部錯誤"); } }]; } //代理方法執行 和 設置代理屬性在同一個線程 //代理的方法 //1 開始解析文檔 - (void)parserDidStartDocument:(NSXMLParser *)parser { NSLog(@"1 開始解析文檔 %@",[NSThread currentThread]); } //2 找開始節點 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict { //elementName 節點的名稱 //attributeDict 標籤的屬性 NSLog(@"2 找開始節點 %@--%@",elementName,attributeDict); } //3 找節點之間的內容 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { // NSLog(@"3 找節點之間的內容 %@",string); } //4 找結束節點 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { //elementName 節點名稱 NSLog(@"4 找結束節點 %@",elementName); } //5 結束解析文檔 - (void)parserDidEndDocument:(NSXMLParser *)parser { NSLog(@"5 結束解析文檔"); } //6 解析出錯 - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError { NSLog(@"出錯"); } @end