IOS开发之路三(XML解析之GDataXML的使用)

21 篇文章 0 订阅

最近再做一个项目需要用到xml的解析。今天查了一些资料自己做了一个小demo。纯OC没有界面。。

在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用第三方的库,原因是解析效率更高、使用上更方便,关于IOS平台各种解析XML库的优缺点分析,可以看下这篇文章:http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

这里主要介绍一下由Google提供的一种在IOS平台上进行XML解析的开源库GDataXML,可以到http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/下载源码,下载下来后进入文件夹找到XMLSupport文件夹,将里面的GDataXMLNode.h和GDataXMLNode.m文件拖拽到项目中新建的文件夹即可(我这里是建的GDataXML文件夹),注意要选中复制文件到项目中而不是只是引用,如图:



然后就是对工程进行一些配置,点击工程根目录然后点击左边的Target,进入Build Phases,然后点击第三个Link binary with libraries,点击加号搜索libxml2并将这个库添加到工程,如图:



接下来再进入Build Settings,在搜索框中搜索Head Search Path,然后双击并点击+按钮添加/usr/include/libxml2,如图:


接下来再搜索框中搜索Other linker flags,同样的方式添加-lxml2,如图:


到这里,添加和配置的工作就完成了(是有点麻烦),接下来就看如何使用了:

首先在工程中新建一个xml文件,作为我们要解析的对象。


<?xml version="1.0" encoding="UTF-8"?>
<root>
    <name value="lixingle"/>
    <age>22</age>
    <name value="wildcat"/>
    <age>21</age>
</root>
主函数:
//
//  main.m
//  XMLGdatademo2
//
//  Created by WildCat on 13-8-4.
//  Copyright (c) 2013年 wildcat. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "GdataXMLNode.h"






int main(int argc, const char * argv[])
{

    
    @autoreleasepool {
       
        //NSString *filePath = [[NSBundle mainBundle] pathForResource:@"users" ofType:@"xml"];
        
         //获取工程目录的xml文件        
        NSString *filePath=[NSString stringWithFormat:@"/WildCat/IOSTiKu/2013_OC/XMLGdatademo2/test.xml"];
        //获得data
        NSString *xmlString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
        
        
        GDataXMLDocument *xmlDoc = [[GDataXMLDocument alloc] initWithXMLString:xmlString options:0 error:nil];
        GDataXMLElement *xmlEle = [xmlDoc rootElement];
        NSArray *array = [xmlEle children];
        
        NSLog(@"count : %zi", [array count]);
        
        for (int i = 0; i < [array count]; i++) {
            GDataXMLElement *ele = [array objectAtIndex:i];
            
            // 根据标签名判断
            if ([[ele name] isEqualToString:@"name"]) {
                // 读标签里面的属性
                NSLog(@"name --> %@", [[ele attributeForName:@"value"] stringValue]);
            } else {
                // 直接读标签间的String
                NSLog(@"age --> %@", [ele stringValue]);
            }  
            
        }
    }
              
    return 0;
}

结果:

2013-08-04 14:05:46.814 XMLGdatademo2[1825:303] count : 4

2013-08-04 14:05:46.818 XMLGdatademo2[1825:303] name --> lixingle

2013-08-04 14:05:46.819 XMLGdatademo2[1825:303] age --> 22

2013-08-04 14:05:46.819 XMLGdatademo2[1825:303] name --> wusj

2013-08-04 14:05:46.820 XMLGdatademo2[1825:303] age --> 24


转载请注明:

原文转载自:http://blog.csdn.net/wildcatlele

新浪微博:http://weibo.com/u/3202802157









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值