郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主。捐赠数额任意,重在心意^_^

我要捐赠: 点击捐赠

Cocos2d-X源代码下载:点我传送

游戏官方下载:http://dwz.cn/RwTjl

游戏视频预览:http://dwz.cn/RzHHd

游戏开发博客:http://dwz.cn/RzJzI

游戏源代码传送http://dwz.cn/Nret1

在iPhone和后台系统的通信中,使用Web Service获取server数据上最常见的一种形式。

而在Web Service通信中。数据交换格式通常上使用XML数据,XML数据也是软件开发中普遍存在的一种格式,

因此XML解析也就成为项目开发中必须掌握的一些基本技能。

本文提供一个XML数据解析类SimpleXMLParser,

该类的特点上将XML数据解析成数据库记录形式,数据解析后保存在NSArray中,

当中数组的每一个元素相应一条数据库记录,每条记录则是由数据库字段和值组成的NSDictionary。

1、接口定义

@interface SimpleXMLParser : NSObject{
NSString *currentPropertyName;
NSMutableString *currentData;
BOOL contentError;
NSString *faultName;
NSString *faultName2;
NSMutableData *webData;
NSMutableArray *theMainStack;
NSMutableArray *currentDataStack; NSXMLParser *parser;
NSString *recordHead;
NSInteger sectionCount;
BOOL beginRecord;
NSMutableString *currentCharacters;
NSMutableDictionary *parsedResponseDictionary;
NSString *parseElementPath;
} - (id)init;
- (void)initData:(NSMutableData *)data;
- (void)parse:(NSString*)head;
- (BOOL)isContentFault;
- (NSInteger)getRecordCount;
- (NSDictionary*)getRecordAtIndex:(NSInteger)idx;
- (NSMutableArray*)getRecordLists;

2、使用

NSMutableData *webData;
SimpleXMLParser *thisParser = [[SimpleXMLParser alloc] initWithData:webData];
NSString *recordHead = @"User";
[thisParser parse:recordHead];

此时解析后的数据库记录保存于Parser对象的recordStack变量中,首先获取记录条数,然后遍历每条记录。

NSInteger i = 0, nResult = [thisParser getRecordCount];
for(i = 0; i < nResult; i++){
NSDictionary *recordDict = [thisParser getRecordAtIndex:i];
NSDictionary *tempDic = [recordDict objectForKey:@"tempDic"];
NSString *value = [tempDic objectForKey:@"value"];
}

SimpleXMLParser类下载地址:点我下载

若无积分,博客以下回复留下Email地址。

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^

我要捐赠: 点击捐赠

Cocos2d-X源代码下载:点我传送

游戏官方下载:http://dwz.cn/RwTjl

游戏视频预览:http://dwz.cn/RzHHd

游戏开发博客:http://dwz.cn/RzJzI

游戏源代码传送http://dwz.cn/Nret1

最新文章

  1. SharePoint 2013 Ajax 造成页面无法编辑
  2. pycharm快捷键、常用设置、包管理
  3. 【转】有监督训练 &amp; 无监督训练
  4. php object转数组示例
  5. 【转载】跟我一起云计算(6)——openAPI
  6. @Html.TextBox 的使用
  7. iOS RC4加解密算法
  8. 在cygwin下编译c语言
  9. mysql时间比较
  10. MySQL 如何使用左链接代替 NOT IN
  11. H5页面测试实战总结
  12. github-SSH模式如何配置秘钥clone远程仓库以及分支切换
  13. 软件工程附加篇章:进阶四则运算和Core对接
  14. C#:匿名类型
  15. C# 文件Copy
  16. EBS标准的查看供应商地址
  17. BASIC-5_蓝桥杯_查找整数
  18. DocX插件
  19. jsp中的js中获取项目路径的方法
  20. SpringData_Repository接口概述

热门文章

  1. JS高级——eval
  2. CSS——行高
  3. [Windows Server 2012] WordPress安全设置方法
  4. Zynq7000系列之芯片系统结构概述
  5. LVS部分调度算法的适应场景分析
  6. R语言数据重塑
  7. Web前端性能优化——提高页面加载速度
  8. 报错:command not found
  9. 写一个 sum方法,在使用下面任一语法调用时,都可以正常工作
  10. UpLoadify在IE下兼容问题