iOS之GDataXMLNode对XML解析

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值