XML 解析-GData

在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文件夹),注意要选中copy选项!!!


添加之后可以做一些配置:在.h 文件里可以看到,如图

XML 解析-GData_第1张图片

首先,点击工程根目录 点击到相应的target,点击Build Phase ,然后点击第三项,Link Binary With Libraries

点击加号,添加如图:

XML 解析-GData_第2张图片

接下来。到Build settings 搜索Header search path, 然后点击加号 添加/usr/include/libxml2

XML 解析-GData_第3张图片

然后搜索 other linker flag ,然后点击加号添加-lxml2如图:

XML 解析-GData_第4张图片



如此,配置完成~开始解析!!


首先,导入头文件

#import "GDataXMLNode.h"


新建一个xml文件 province_data.xml

  1. xml version="1.0" encoding="utf-8"?>  
  2. <Users>  
  3.     <User id="001"]]>  
  4.         <name>Ryanname>  
  5.         <age>24age>  
  6.     User>  
  7.     <User id="002"]]>  
  8.         <name>Tangname>  
  9.         <age>23age>  
  10.     User>  
  11. Users> 

    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"province_data" ofType:@"xml"];
    NSData *provinceData = [NSData dataWithContentsOfFile:plistPath];
    
    //使用NSData对象初始化
    GDataXMLDocument *doc = [[GDataXMLDocument alloc]initWithData:provinceData error:nil];
    //获取根节点(Users)
    GDataXMLElement *rootElement = [doc rootElement];
    
    //获取根节点下的节点(User)
    NSArray *users = [rootElement elementsForName:@"User"];
    
    for (GDataXMLElement *user in users) {
        //User节点的id属性
        NSString *userId = [[user attributeForName:@"id"] stringValue];
        NSLog(@"User id is:%@",userId);
        
        //获取name节点的值
        GDataXMLElement *nameElement = [[user elementsForName:@"name"] objectAtIndex:0];
        NSString *name = [nameElement stringValue];
        NSLog(@"User name is:%@",name);
        
        //获取age节点的值
        GDataXMLElement *ageElement = [[user elementsForName:@"age"] objectAtIndex:0];
        NSString *age = [ageElement stringValue];
        NSLog(@"User age is:%@",age);
        NSLog(@"-------------------");
    }

控制台输出


XML 解析-GData_第5张图片



你可能感兴趣的:(xml,GData)