【iOS开发-网络】两种常用的方法解析XML数据
2015-06-13 21:12
726 查看
解析XML数据常用的有两种方法
使用的是DOM方式解析
先把xml一口吞掉 然后一点一点的解析
使用的是SAX方式解析
一个标记一个标记的解析
更改头文件搜索路径
在Header Search Paths里面添加路径/usr/include/libxml2
在Other Linker Flags里面添加-lxml2
把GDataXMLNode.m文件改为非ARC环境
每当碰见一个标记的话就会调用代理方法
代理方法
第一种
使用Google的GDataXMLNode解析XML数据使用的是DOM方式解析
先把xml一口吞掉 然后一点一点的解析
第二种
使用苹果自带的NSXMLParser解析XML数据使用的是SAX方式解析
一个标记一个标记的解析
第一种使用步骤
第一步
首先把GDataXML文件夹放入项目中第二步
更改Bulid Setting里面的东西更改头文件搜索路径
在Header Search Paths里面添加路径/usr/include/libxml2
在Other Linker Flags里面添加-lxml2
把GDataXMLNode.m文件改为非ARC环境
第三步引入头文件
#import "GDataXML/GDataXMLNode.h"
代码
//加载整个文档 GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil]; //拿到跟元素 GDataXMLElement *rootElement = doc.rootElement; //拿到所有的video元素 NSArray *elements= [rootElement elementsForName:@"video"]; //遍历数组 for (GDataXMLElement *elem in elements) { Video *video = [[Video alloc] init]; video.ID = [elem attributeForName:@"id"].stringValue; video.length = [elem attributeForName:@"length"].stringValue; video.name = [elem attributeForName:@"name"].stringValue; video.image = [elem attributeForName:@"image"].stringValue; video.url = [elem attributeForName:@"url"].stringValue; [self.videos addObject:video]; }
第二种解析的使用方法
这个方法是苹果提供的,需要设置代理方法每当碰见一个标记的话就会调用代理方法
//创建解析器 NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data]; //设置解析器的代理 parser.delegate = self; //开始解析 [parser parse];//这是一个同步操作
代理方法
/** * 解析到文档的开头时会调用 */ - (void)parserDidStartDocument:(NSXMLParser *)parser { } /** * 解析到一个元素的开始就会调用 * * @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 { } /** * 解析到文档的结尾时会调用(解析结束) */ - (void)parserDidEndDocument:(NSXMLParser *)parser { }
相关文章推荐
- delete分析 引用于 http://www.cnblogs.com/yuzhongwusan/archive/2012/06/14/2549879.html
- 实验五 Java网络编程及安全
- Ubuntu Server 下配置静态网络的方法
- 文件与网络、JSON解析
- 【iOS开发-网络】解析json数据
- 神经网络的理论基础
- unity开发:UDP socket网络连接
- TCP连接检测及处置
- TCP连接状态详解
- 用Dart搭建HTTP服务器(1)
- 如何解决Windows 7的多重网络问题
- 搭建无线漫游网络及需要注意的问题
- 手机如何借用笔记本网络上网
- tcp
- 替代WinPcap的新型Windows网络数据包截获软件——NPcap
- HTTP 1.1引入分块传输编码提供了以下几点好处:
- Win7旗舰版无线网络不能保存密码,以及不能创建热点
- 无法连接vCenter Server清单https://IP:10443
- TCP 的有限状态机
- TCP连接的建立与释放