关于iOS解析XML使用NSXMLParser和GDataXML不得不说的一些事

原创 2015年07月07日 20:01:55
  1. NSXMLParser
    最近刚学习iOS,需要解析一个XML如下:http://wthrcdn.etouch.cn/WeatherApi?citykey=101050101,最开始选择使用自带的NSXMLParser,首先,NSXMLParser必须继承NSXMLParserDelegate协议
@interface ...   : ...  <NSXMLParserDelegate>

然后就是要初始化啦,
- (void)viewDidLoad {
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];//设置XML数据
[parser setDelegate:self];
[parser parse];
}

(1)遍例xml的节点,是所有的节点

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
}

(2)当xml节点有值时,则进入,用来取出<a></a>之间的值

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
}

(3)当遇到结束标记时,进入,用来存储上述(2)取得值,

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
}

在遍历结束前,会反复执行上述三个方法,但是在解析的过程中,出现了一个问题,就是数字和文字分离的情况,比如,2级,解析的结果是2和级而不是2级,最终也没弄明白事什么原因,随后又换了GDataXML,就没有这个问题了。

2.GDataXML
GDataXMLNode是Google提供的用于XML数据处理的类集。该类集对libxml2–DOM处理方式进行了封装,能对较小或中等的xml文档进行读写操作且支持XPath语法。
(1)获取GDataXMLNode.h/m文件,将GDataXMLNode.h/m文件添加到工程中
(2)工程中增加“libxml2.dylib”库
(3)在工程的“Build Settings”页中找到“Header Search Path”项,添加/usr/include/libxml2”到路径中,在Linking中找到 Other Linker Flags 对应的值改为:-lxml2。
(4)添加“GDataXMLNode.h”文件到头文件中
首先,初始化GDataXMLDocument,在定义根元素,以及根元素下一层的孩子元素

- (void)viewDidLoad
{
    NSString *path = [NSString stringWithFormat:@"http://wthrcdn.etouch.cn/WeatherApi?citykey=101050101"];
    NSURL *url = [[NSURL alloc] initWithString:path];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
    GDataXMLDocument *xmlDoc = [[GDataXMLDocument alloc] initWithData:urlData options:0 error:nil];
    GDataXMLElement *xmlEle = [xmlDoc rootElement];  //根元素 resp
    NSArray *array = [xmlEle children];//孩子元素city,updatetime...
    [self parseXml:array];   
}

然后就是层层循环嵌套的过程啦

-(void) parseXml:(NSArray *)array
{
    for (int i = 0; i<[array count]; i++) {
        GDataXMLElement *ele = [array objectAtIndex:i];
        if([[ele name] isEqualToString:@"city"])
           ...
        else if ([[ele name] isEqualToString:@"forecast"]) {
            GDataXMLDocument *weatherxml = [[GDataXMLDocument alloc]initWithRootElement:ele];
            GDataXMLElement *weatherxmlele = [weatherxml rootElement];//根元素 forecast
            NSArray *weatherarray = [weatherxmlele children];//孩子元素 weather
            for(int j = 0;j<[weatherarray count];j++)
       }
    }
}

GDataXML的方式很容易理解,就是在不停嵌套的时候对跟和孩子不要弄晕就好啦!本人才疏学浅,有不对的地方还忘批评指正!

版权声明:本文为博主原创文章,未经博主允许不得转载。

GDataXMLNode应用

1,安装:将GDataXMLNode文件加入至工程中->向Frameworks文件中添加libxml2.dylib库->在Croups & Files 侧边栏中双击工程图标,找到 build 修改两个...
  • chowpan
  • chowpan
  • 2013年03月07日 10:59
  • 8259

iOS开发------XML原生解析(NSXMLParser篇)

由于项目需要,最近就研究了一些与视频流相关的知识,在学习的过程中发现,JSON作为轻量级的数据传输格式就显的非常不便.当然,这句话的意思就是说在学习过程中碰到的XML格式数据居多了呗,这时掌握一些XM...
  • RunIntoLove
  • RunIntoLove
  • 2016年06月02日 16:40
  • 2859

iOS-XML文件解析(原生NSXMLParser和GDataXML两种解析方式)

XML文件解析常用的两种方式一种为苹果原生的NSXMLParser,另外一种为第三方GDataXML1.原生的NSXMLParser方式://*利用 NSXMLParser 方式 -(void)XML...
  • qiuxuewei2012
  • qiuxuewei2012
  • 2016年08月30日 14:36
  • 5644

说说项目管理的那些事儿

在我们的开发团队里,每一个带过项目的人都成了优秀的员工. 这不是偶然,领导别人才会明白如何被领导,有句话叫”没有当过老板的员工不是好员工.”五年前听说这句话的时候还很不理解,等到自己做了项目负责人才...
  • zhuanzhe117
  • zhuanzhe117
  • 2015年07月19日 16:12
  • 2083

XML解析(NSXMLParser、GDataXML)

参考:http://my.oschina.net/LouWk/blog/112978 XML解析一般分俩种模式SAX和DOM,事件和文档。 SAX解析:事物模型解析,从头开始读取文档然后根据读取到...
  • jie863230900
  • jie863230900
  • 2015年04月17日 14:27
  • 339

敏捷中不能说的秘密

---Scrum浅析
  • shixin747
  • shixin747
  • 2014年05月01日 13:49
  • 607

IOS数据解析_使用GDataXML解析,多层结构,相同目录的方法

项目例子(包含GDataXML框架) http://download.csdn.net/detail/u013686641/7672689 /*说明      将GDataXML引入...
  • u013686641
  • u013686641
  • 2014年07月24日 14:54
  • 1088

iOS网络数据解析--XML解析详解(GDataXMLNode&原生NSXMLParser)

在iOS开发中,大多数情况下,从网络获取的数据通常分两种。 JSON格式或者XML格式。 JSON是一种轻量级的数据格式,一般用于数据交互 JSON数据类似OC中的字典,解析方式也有很多ios5...
  • hongfengkt
  • hongfengkt
  • 2015年08月25日 17:35
  • 1563

iOS之数据解析之XML解析

XML解析常见的两种方式:DOM解析和SAX解析DOM解析 DOM:Document Object Model(文档对象类型).解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通...
  • u010390827
  • u010390827
  • 2016年05月06日 21:30
  • 2939

iOS使用GDataXML-HTML生成XML

iOS版本系统自带的XML类只能进行解析,无法生成XML。开源库GDataXML-HTML不仅支持XML解析,还支持生成XML。 1. 添加GDataXML-HTML到项目中。 笔者使用的项目都使用C...
  • yang2735
  • yang2735
  • 2014年08月13日 10:14
  • 1690
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于iOS解析XML使用NSXMLParser和GDataXML不得不说的一些事
举报原因:
原因补充:

(最多只允许输入30个字)