iOS之GDataXMLNode对XML解析
2015-06-23 14:52
691 查看
GDataXMLNode是Google提供的开源XML解析类,对libxml2.dylib进行了Objective-C的封装
采用DOM方式解析数据
iOS中包含一个C语言的动态链接库libxml2.dylib,解析速度比NSXMLParer快(NSXMLParer解析参照:iOS之NSXMLParser对XML解析)
首先下载第三方包,并导入工程
链接: http://pan.baidu.com/s/1sjOGfId 密码: ue9v
这个时候,编译一下工程,会报错
提示用户:#import <libxml/tree.h>文件找不到,这里我们看GDataXMLNode.h文件上方的提示:
可见我们需要配置两个属性
一、在Header Search Paths中包含"/usr/include/libxml2"
二、在Other Linker Flags中包含“-lxml2”
Other Linker同样的操作
配置完后,编译工程,如果还报错的话:我们就需要配置MRC与ARC混编
参照iOS之MRC与ARC混编的设置
这样就ok了。
下面来看看怎么使用GDataXMLNode解析XML文件
XML文件结构如下
解析过程:
执行结果
下一章:JSON解析
采用DOM方式解析数据
iOS中包含一个C语言的动态链接库libxml2.dylib,解析速度比NSXMLParer快(NSXMLParer解析参照:iOS之NSXMLParser对XML解析)
首先下载第三方包,并导入工程
链接: http://pan.baidu.com/s/1sjOGfId 密码: ue9v
这个时候,编译一下工程,会报错
提示用户:#import <libxml/tree.h>文件找不到,这里我们看GDataXMLNode.h文件上方的提示:
// libxml includes require that the target Header Search Paths contain // // /usr/include/libxml2 // // and Other Linker Flags contain // // -lxml2
可见我们需要配置两个属性
一、在Header Search Paths中包含"/usr/include/libxml2"
二、在Other Linker Flags中包含“-lxml2”
Other Linker同样的操作
配置完后,编译工程,如果还报错的话:我们就需要配置MRC与ARC混编
参照iOS之MRC与ARC混编的设置
这样就ok了。
下面来看看怎么使用GDataXMLNode解析XML文件
XML文件结构如下
<?xml version="1.0" encoding="UTF-8" ?> <students> <student type="CEO"> <name>zhangsan001</name> <age>18</age> <gender>man</gender> </student> <student> <name>zhangsan002</name> <age>10</age> <gender>woman</gender> </student> <student> <name>zhangsan003</name> <age>12</age> <gender>manman</gender> </student> </students>
解析过程:
// 1.获取文件路径 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Students" ofType:@"xml"]; // 2.获取数据 NSData *data = [NSData dataWithContentsOfFile:filePath]; // 3.创建解析对象 GDataXMLDocument *dataXmlDocument = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil]; // 3.1获取根节点 GDataXMLElement *rootElement = dataXmlDocument.rootElement; // 初始化大数组 _allDataArray = [NSMutableArray array]; // 4.遍历根节点,获取所有代表学生的节点 for (GDataXMLElement *stuElement in rootElement.children) { // 4.1创建学生对象 Student *stu = [Student new]; // 4.2遍历学生节点下的name、age、gender子节点 for (GDataXMLElement *valueElement in stuElement.children) { // 4.3使用KVC给stu对象赋值 [stu setValue:valueElement.stringValue forKey:valueElement.name]; } // 4.4将stu对象添加到大数组中 [_allDataArray addObject:stu]; } NSLog(@"%@", _allDataArray);
执行结果
2015-06-23 15:42:13.181 Lesson_15_xml[4233:198463] ( "name = zhangsan001 age = 18 gender = man", "name = zhangsan002 age = 10 gender = woman", "name = zhangsan003 age = 12 gender = manman" )
下一章:JSON解析
相关文章推荐
- nodejs实战的github地址,喜欢的你还等啥
- 充分发挥Node.js程序性能的一些方法介绍
- Node.js编程中客户端Session的使用详解
- 使用Meteor配合Node.js编写实时聊天应用的范例
- Count Complete Tree Nodes LeetCode Java
- 使用Node.js为其他程序编写扩展的基本方法
- Windows系统下Node.js的简单入门教程
- 使用Raygun对Node.js应用进行错误处理的方法
- Nodejs环境与express框架
- linode VPS购买、设置教程
- leetcode--Populating Next Right Pointers in Each Node II
- 使用Raygun对Node.js应用进行错误处理的方法
- Windows系统下Node.js的简单入门教程
- 使用Node.js为其他程序编写扩展的基本方法
- 使用Meteor配合Node.js编写实时聊天应用的范例
- 充分发挥Node.js程序性能的一些方法介绍
- 浅析Node.js中的内存泄漏问题
- Python和Node.js总监
- nodeJs 初探 ~
- socket.io + nodes 实现webSocket消息提醒