前言:本篇随笔介绍的是XML解析。

正文:

1、XML解析方式有2两种:

  • DOM:一次性将整个XML数据加载进内存进行解析,比较适合解析小文件
  • SAX:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件

2、IOS中XML解析方案有很多种:

  2-1、第三方框架:

    libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX解析

    GDataXML:DOM方式解析,由Google开发,基于libxml2

  2-2、苹果原生

    NSXMLParser:SAX方式解析,使用简单

  2-3、本人基于苹果原生NSXMLParser封装好的XML解析工具

    HYXMLParser:SAX方式解析,使用比NSXMLParser更简单,更简洁。

               下载地址:HYXMLParser

3、XML解析方式的选择建议

  大文件:NSXMLParser或者HYXMLParser、libxml2(但是几乎不用)

  小文件:GDataXML、NSXMLParser或者HYXMLParser、libxml2

4、NSXMLParser使用示例:

   解析过程三步走:

  

    

  

   以上示例源码百度云分享链接: http://pan.baidu.com/s/1c1oLiRu 密码: byxc

5、关于本人封装NSXMLParser而创作的HYXMLParser使用代码示例:

  <好处:使用方便,可以面向任意类型的模型对象解析XML,复用性高,与外界高内聚低耦合>

  这里展示的示例是从我的github上HYXMLParser下载的XMLParser_3这第3个版本的XML解析工具类:

  

  5-1、先将HYXMLParse文件工具类直接拷贝你的项目中:

  

  5-2、然后使用:

  

  根据实际需求,字典转模型的方法可能用MJExtension代替KVC最合适。

  

  如果读者熟悉苹果原生的NSXMLParser,那么再来使用本人封装好的这个HYXMLParser,你会发现本人封装好的HYXMLParser很简单易用。

  同时建议刚学习XML解析的读者先熟练掌握苹果NSXMLParser解析,也就是前面第4点介绍的解析过程,再来学习使用本人的HYXMLParser

6、简单说说本人封装好的的HYXMLParser_3的实现思路。

  6-1、将苹果原生的NSXMLParser通过代理方法SAX解析XML的方式封装在一个普通的NSObject类中。

  6-2、在代理解析方法中,因为需要不断的创建模型对象,这里我使用了NSObjectFromString方法,通过类的名字来创建类对象,然后通过类对象创建模型对象。

      这样就模型对象的类名可以通过参数NSString类型外部传入,同时实现了与模型对象的解耦,不需要import需要的模型对象的类。

  6-3、根据实际需求,可能需要MJExtension字典转模型来替代功能有限的苹果原生的KVC,所以这里用Block来提供对外公开的接口,让外部自由选择字典转模型的方法。

转载注明出处:http://www.cnblogs.com/goodboy-heyang/p/5188410.html,尊重劳动成果。

iOS开发之网络数据解析(二)--XML解析简介的更多相关文章

  1. ios开发之网络数据的下载与上传

    要实现网络数据的下载与上传,主要有三种方式 > NSURLConnection  针对少量数据,使用“GET”或“POST”方法从服务器获取数据,使用“POST”方法向服务器传输数据; > ...

  2. iOS开发之网络数据解析(一)--JSON解析简介

    前言:对服务器请求之后,返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) 本篇随便先讲解JSON解析. 正文: 关于JSON: JSON是一种轻量级的数据格式,一般用于数据交互 ...

  3. iOS开发之网络数据解析--中文输出

    对于服务器返回的数据,解析之后直接打印,如果数据中原本有中文,可能会出现中文乱码的结果: 为了避免这个问题,可以通过类别来重写系统和打印相关的方法. 步骤: 1.新建文件名:Foundation+Lo ...

  4. iOS开发之网络数据解析--GDataXML解析框架的使用

      前言:GDataXML是google基于C语言libxml2写的第三方框架,该源码文件就一个类,看其源码,基本使用了C语言的底层的很多lib编译库代码,所以刚导入使用,会报错提示需要设置导入需要的 ...

  5. ios 网络数据下载和JSON解析

    ios 网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍ios中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载 ...

  6. ios的网络数据下载和json解析

    ios的网络数据下载和json解析 简介 在本文中,笔者将要给大家介绍如何使用nsurlconnection 从网上下载数据,以及解析json数据格式,以及如何显示数据和图片的异步下载显示. 涉及的知 ...

  7. iOS之网络数据下载和JSON解析

    iOS之网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍IOS中如何利用NSURLconnection从网络上下载数据以及如何解析下载下来的JSON数据格式,以及如何显示数据和托图片的异步 ...

  8. IOS开发之网络开发工具

    IOS开发之网络开发工具 做移动端开发  常常会涉及到几个模块:1.网络检測   2.网络请求get和post请求  3.文件上传  4.文件下载   5.断点续传 如今将这些一一分享给大家 ,也欢迎 ...

  9. iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传

    前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDa ...

随机推荐

  1. JavaScript TDD with Mocha

    开发现状 当新的版本快要发布的时候,大家都忙于加班,加紧修复BUG1.BUG2.我想这就是很多公司开发的现状. 为了不至于让上线的版本挂掉挂掉,少不了就是 人肉测试. 在一个项目中,我们会做许许多多各 ...

  2. [Node.js] 使用File API 异步上传文件

    原文地址:http://www.moye.me/2014/11/05/html5-filereader/ 最近在做一个网盘的项目,不出意外的涉及到大文件的上传,那么问题来了:如何实时的显示文件上传的进 ...

  3. iOS-微信-分享

    一.微信原生的分享--准备工作. 1. 需要申请微信AppId. 2. 导入系统架包. SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h,WechatAuthS ...

  4. C#开源资源项目

    一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(as ...

  5. 【C#】委托

    一.委托的基本的写法 internal class Program { private static void Main(string[] args) { ChainDelegate(); Conso ...

  6. SQL 日期转换(阳历转阴历)

    --步骤:创建日期表,放初始放初始化资料 --因为农历的日,是由天文学家推算出来,到现在只有到年,以后的有了还可以加入! if object_id('SolarData') is not nulldr ...

  7. MySQL的字符集

    MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation). 字符(Character)是指人类语言中最小的表 ...

  8. java操作小技巧,遇到过的会一直更新,方便查找

    1.<c:forEach>可以循环map array List 2.操纵数组,不知道类型的情况下,不需要判断数组类型,直接用反射,arrays.Class.isArrays() 获取数组长 ...

  9. Mongoose 框架初学使用记录

    嘛.... 最近由于需要使用HTTP服务端,原先是使用的Qt框架实现的HTTP服务端,然后发现有些缺陷导致我不得不放弃这个框架,也不是完全放弃,只是HTTP服务端这里不再使用Qt,用Qt做高并发真的有 ...

  10. java之StringBuilder类详解

    StringBuilder 非线程安全的可变字符序列 .该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍).如果可能,建议优先采用该类,因为在 ...