您的位置:首页 > Web前端 > Node.js

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文件上方的提示:

// 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解析
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: