在ios 中解析xml 的方法有很多种
1.苹果原生
NSXMLParser:SAX方式解析,使用简单
2.第三方框架
libxml2:纯c语言,默认包含在ios sdk中,同时支持DOM 和 SAX 方式解析
GDataXML : DOM方式解析,由谷歌开发,基于libxml2
xml 解析建议方式:
大文件选用:NSXMLParser 或者 libxml2
小文件选用:GDataXML
1 // 2 // ViewController.m 3 // 04-xml解析 4 // 5 // Created by jerry on 15/9/28. 6 // Copyright (c) 2015年 jerry. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 11 @interface ViewController ()<NSXMLParserDelegate> 12 13 @end 14 15 @implementation ViewController 16 17 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 18 [self loadData]; 19 } 20 /** 21 * 加载xml 数据 22 */ 23 - (void)loadData 24 { 25 // 1.url 26 NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/videos.xml"]; 27 28 // 2.请求 29 NSURLRequest *request = [NSURLRequest requestWithURL:url]; 30 31 // 3.连接 32 [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 33 // xml 解析 34 35 // 1.实例化xml 解析器 36 NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data]; 37 38 // 2.设置代理 39 parser.delegate = self; 40 41 // 3.开始解析 42 [parser parse]; 43 44 45 }]; 46 } 47 #pragma mark - 代理方法 48 /** 49 * 1.打开文档 准备开始解析 50 * 51 * @param parser <#parser description#> 52 */ 53 - (void)parserDidStartDocument:(NSXMLParser *)parser 54 { 55 NSLog(@"打开文档"); 56 } 57 58 /** 59 * 2.开始节点 60 * 61 * @param parser <#parser description#> 62 * @param elementName 属性名称 63 * @param namespaceURI <#namespaceURI description#> 64 * @param qName <#qName description#> 65 * @param attributeDict <#attributeDict description#> 66 */ 67 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 68 { 69 NSLog(@"开始节点---%@---%@",elementName,attributeDict); 70 } 71 /** 72 * 3.发现节点里面内容 73 * 74 * @param parser <#parser description#> 75 * @param string <#string description#> 76 */ 77 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 78 { 79 NSLog(@"发现节点内容---%@",string); 80 } 81 /** 82 * 4.结束节点 83 * 84 * @param parser <#parser description#> 85 * @param elementName <#elementName description#> 86 * @param namespaceURI <#namespaceURI description#> 87 * @param qName <#qName description#> 88 */ 89 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 90 { 91 NSLog(@"结束节点---%@",elementName); 92 } 93 /** 94 * 5.结束文档 95 * 96 * @param parser <#parser description#> 97 */ 98 - (void)parserDidEndDocument:(NSXMLParser *)parser 99 { 100 NSLog(@"结束文档"); 101 } 102 103 104 105 106 107 108 109 110 111 @end
原文:http://www.cnblogs.com/pengpengzhang/p/4843594.html