最近再做一个项目需要用到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文件,作为我们要解析的对象。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <root>
  3. <name value="lixingle"/>
  4. <age>22</age>
  5. <name value="wildcat"/>
  6. <age>21</age>
  7. </root>
  1. <span style="color:#33ff33;">主函数:</span>
  1. //
  2. //  main.m
  3. //  XMLGdatademo2
  4. //
  5. //  Created by WildCat on 13-8-4.
  6. //  Copyright (c) 2013年 wildcat. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import "GdataXMLNode.h"
  10. int main(int argc, const char * argv[])
  11. {
  12. @autoreleasepool {
  13. //NSString *filePath = [[NSBundle mainBundle] pathForResource:@"users" ofType:@"xml"];
  14. //获取工程目录的xml文件
  15. NSString *filePath=[NSString stringWithFormat:@"/WildCat/IOSTiKu/2013_OC/XMLGdatademo2/test.xml"];
  16. //获得data
  17. NSString *xmlString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
  18. GDataXMLDocument *xmlDoc = [[GDataXMLDocument alloc] initWithXMLString:xmlString options:0 error:nil];
  19. GDataXMLElement *xmlEle = [xmlDoc rootElement];
  20. NSArray *array = [xmlEle children];
  21. NSLog(@"count : %zi", [array count]);
  22. for (int i = 0; i < [array count]; i++) {
  23. GDataXMLElement *ele = [array objectAtIndex:i];
  24. // 根据标签名判断
  25. if ([[ele name] isEqualToString:@"name"]) {
  26. // 读标签里面的属性
  27. NSLog(@"name --> %@", [[ele attributeForName:@"value"] stringValue]);
  28. } else {
  29. // 直接读标签间的String
  30. NSLog(@"age --> %@", [ele stringValue]);
  31. }
  32. }
  33. }
  34. return 0;
  35. }

结果:

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://weibo.com/u/3202802157

IOS开发之路三(XML解析之GDataXML的使用)的更多相关文章

  1. IOS开发之路三(XML解析之KissXML的使用)

    最近再做一个项目需要用到xml的解析.今天查了一些资料自己做了一个小demo.纯OC没有界面.. 在IOS平台上进行XML文档的解析有很多种方法,在SDK里面有自带的解析方法,但是大多情况下都倾向于用 ...

  2. iOS开发笔记3:XML/JSON数据解析

    这篇主要总结在iOS开发中XML/JSON数据解析过程用到的方法.XML数据解析主要使用SAX方式的NSXMLParser以及DOM方式的GDataXML,JSON数据解析主要使用NSJSONSeri ...

  3. Duilib源码分析(三)XML解析器—CMarkup

    上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup: CMarkup:xml解析器,目前内置支持三种编码格式:UTF8.UNICODE.ASNI,默认为UTF ...

  4. 【Cocos2d-x游戏引擎开发笔记(25)】XML解析

    原创文章,转载请注明出处:http://blog.csdn.net/zhy_cheng/article/details/9128819 XML是一种非常重要的文件格式,由于C++对XML的支持非常完善 ...

  5. iOS 开发之路(AES/DES加密实现) 三

    最近接触的这个项目由于以前服务器上用的是DES/CBC/PKCS5Padding加密方式,为了让在iOS上的加密结果与服务器端保持一致,我做了很多尝试,现在分享给大家.PS:现在不推荐用DES了,只是 ...

  6. iOS 开发之路(WKWebView内嵌HTML5之图片上传) 五

    HTML5页面的图片上传功能在iOS端的实现. 首先,页面上用的是plupload组件,在wkwebview上存在两个坑需要修复才能正常使用. 问题:在webview上点击选择照片/相机拍摄,就会出现 ...

  7. IOS开发之路四(UITabBarController)

    前两天看了看斯坦福大学的iphone开发公开课,讲的倒是不错,可看的我云里雾里的,不怎么讲基础和原理,不太适合初学者.今天看了一上午ios5基础教程这本书感觉有点头绪了....废话少说,讲一讲我上午做 ...

  8. iOS 开发之路(使用WKWebView加载Html5) 四

    基于Swift 3 . Xcode 8 . iOS 10 下的WKWebView的使用. 首先是WKWebView的基本用法: var wk:WKWebView! var progBar:UIProg ...

  9. iOS 开发之路(登陆验证调用WebService)二

    swift3.0下使用Alamofire调用Webservice遇到的一些问题以及解决方案. 首先是针对没有证书的https下的接口处理问题(ps:不推荐在正式版本中使用),manager.reque ...

随机推荐

  1. centos6.5 x86_64安装oracle 11.2.0.3grid

     centos6.5 x86_64安装oracle 11.2.0.3grid 1.安装前的准备 工作 1.1.配置node1 1.1.1.配置虚拟机并安装centos 安装node1----- 1 ...

  2. hardware_hp存储映射_方案

    修改虚拟磁盘映射方式 每个刀片独立对应映射存储空间 这样就不会造成数据写入冲突, old new 步奏: 创建过程  lun号码  1-155 之间 第二步奏 最后 指定: 就ok了 2012年12月 ...

  3. netty 3.9.2 UDP协议服务器和客户端DEMO

    说明:基于netty 3.9.2的udp协议实现的(如果你使用的版本是4.X或5.X,请参考其他方法):程序的逻辑结构是,客户端发送给服务端一串数据,服务器端返回给客户端“A”.在进行游戏开发时需要对 ...

  4. poj 1556 zoj1721 BellmanFord 最短路+推断直线相交

    http://poj.org/problem?id=1556 The Doors Time Limit: 1000MS   Memory Limit: 10000K Total Submissions ...

  5. IOS程序创建view

    在IOS程序中创建view有六种方式 首先创建一个GLViewController类,继承UIViewController. 然后进入GLAppDelegate.m,在- (BOOL)applicat ...

  6. java 集装箱 arraylist 用法

    1. ArrayList概述: ArrayList 是一个数组队列.相当于 动态数组. 与Java中的数组相比.它的容量能动态增长.它继承于AbstractList.实现了List, RandomAc ...

  7. HTTP 错误500.19 -Internal Server Error

    原文:HTTP 错误500.19 -Internal Server Error HTTP 错误500.19 -Internal Server Error 错误代码 0x80070021 评论1 字号: ...

  8. 将已有的工程项目添加到Xcode到Git管理中

    在Xcode中创建工程的时候,我们很容易的可以将新创建的工程添加到Git中,如图: 但是如果是本地已经有的工程,那该如何添加到Git中呢? 首先终端进入到该工程的目录. 然后: git init gi ...

  9. STL容器存储的内容动态分配情况下的内存管理

    主要分两种情况:存储的内容是指针:存储的内容是实际对象. 看以下两段代码, typedef pair<VirObjTYPE, std::list<CheckID>*> VirO ...

  10. 打印Ibatis最后,SQL声明

    做项目时,满足这一需求.我们希望最终打印出在数据库运行SQL声明,这些都普遍遇到了一些一般性问题.我会去Appfuse,结果这次没有成功.它是有相关的配置,可是好像没实用.我也就没有深查下去.我想这种 ...