iOS之GDataXMLNode对XML解析

来源:互联网 发布:微博互粉软件哪个好 编辑:程序博客网 时间:2024/05/17 07:57

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解析

0 0
原创粉丝点击