iOS开发3-使用DOM(GData)解析XML数据
2015-10-20 19:19
633 查看
使用DOM解析XML
DOM= Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。
换句话说,这是表示和处理一个HTML或XML文档的常用方法。有一点很重要,DOM的设计是以对象管理组织(OMG)的规约为基础的,因此可以用于任何编程语言。
GDataXMLNode是Google提供的用于XML数据处理的类集。
该类集对libxml2--DOM处理方式进行了封装,能对较小或中等的xml文档进行读写操作且支持XPath语法。
导入GDataXMLNode.h和GDataXMLNode.m要注意设置
target Header Search Paths contain
/usr/include/libxml2
Other Linker Flags contain
-lxml2
如果工程使用ARC,还要设置ARC和MRC兼容。
代码下载(Xcode7.0.1)
有问题请联系博主,邮箱:nathanlee1987@aliyun.com
DOM= Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。
换句话说,这是表示和处理一个HTML或XML文档的常用方法。有一点很重要,DOM的设计是以对象管理组织(OMG)的规约为基础的,因此可以用于任何编程语言。
GDataXMLNode是Google提供的用于XML数据处理的类集。
该类集对libxml2--DOM处理方式进行了封装,能对较小或中等的xml文档进行读写操作且支持XPath语法。
导入GDataXMLNode.h和GDataXMLNode.m要注意设置
target Header Search Paths contain
/usr/include/libxml2
Other Linker Flags contain
-lxml2
如果工程使用ARC,还要设置ARC和MRC兼容。
//解析XML //DOM 树型解析(GData来自谷歌的解析工具,推荐使用)数据少的时候使用 // NSLog(@"%@",self.dataArray); self.dataArray=[NSMutableArray array]; NSString * filePath=[[NSBundle mainBundle]pathForResource:@"data_XML1" ofType:@"txt"]; //data NSData * data=[NSData dataWithContentsOfFile:filePath]; //将文件内容读取到document对象中--(树) GDataXMLDocument *document=[[GDataXMLDocument alloc]initWithData:data options:0 error:nil]; //获取根节点 GDataXMLElement *rootElement=document.rootElement; //第1种 data_XML1.txt情况 //遍历子节点 for (GDataXMLElement *e in rootElement.children) { //继续遍历 //model对象保存值 Message *m=[[Message alloc]init]; for (GDataXMLElement *e1 in e.children) {[m setValue:e1.stringValue forKey:e1.name]; } [self.dataArray addObject:m]; } //第2种 self.dataArray2=[NSMutableArray array]; NSString * filePath2=[[NSBundle mainBundle]pathForResource:@"data_XML2" ofType:@"txt"]; //data NSData * data2=[NSData dataWithContentsOfFile:filePath2]; //将文件内容读取到document对象中--(树) GDataXMLDocument *document2=[[GDataXMLDocument alloc]initWithData:data2 options:0 error:nil]; //获取根节点 GDataXMLElement *rootElement2=document2.rootElement; for (GDataXMLElement * e in rootElement2.children) { //NSLog(@"%@",e.attributes);//e.attributes //所有的属性都被放到一个数组中,是GDataXMLNode类型 //for (GDataXMLNode *d in e.attributes) //{NSLog(@"%@,%@",d.name,d.stringValue); } Message * m=[[Message alloc]init]; for (GDataXMLNode *d in e.attributes) {[m setValue:d.stringValue forKey:d.name];} //存入数组 [self.dataArray2 addObject:m]; } //显示解析得到的文档 NSLog(@"第一种"); for (Message *m in self.dataArray) { NSLog(@"sender:%@",m.sender); NSLog(@"receiver:%@",m.receiver); NSLog(@"content:%@",m.content); NSLog(@"date:%@",m.date); } //显示解析得到的文档 NSLog(@"第二种"); for (Message *m in self.dataArray2) { NSLog(@"sender:%@",m.sender); NSLog(@"receiver:%@",m.receiver); NSLog(@"content:%@",m.content); NSLog(@"date:%@",m.date); }
代码下载(Xcode7.0.1)
有问题请联系博主,邮箱:nathanlee1987@aliyun.com
相关文章推荐
- iOS 字符串常用编码互相转换
- iOS开发2-使用SAX解析XML数据
- iOS 响应者链Responder Chain浅析
- iOS中生成随机数
- iOS开发1-使用NSJSONSerialization解析JSON数据
- IOS学习之 消息推送
- iOS -实现imageView中的button响应点击事件的方法
- iOS -实现imageView中的button响应点击事件的方法
- BIOS+MBR+chameleon 黑苹果安装教程 10.10.5 Yosemite
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(九)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(九)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(九)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(八)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(八)
- (NO.00001)iOS游戏SpeedBoy Lite成形记(八)
- CCNA学习笔记3---备份和升级IOS
- IOS将字符串转换为日期时间格式