`
反求诸己
  • 浏览: 543102 次
  • 性别: Icon_minigender_1
  • 来自: 湖南娄底
社区版块
存档分类
最新评论

详解iOS平台XML解析类库对比和安装说明

 
阅读更多

 

详解iOS 平台XML 解析类库对比和安装说明是本文要介绍的内容。不多说,先来看内容。

iPhone 开发中,XML 的解析有很多选择,iOS  SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML、TouchXML、KissXML、TinyXML和GDataXML。问题是应该选择哪一个呢?

解析 XML  通常有两种方式,DOM 和 SAX:

DOM解析XML 时,读入整个XML 文档并构建一个驻留内存的树结构(节点树),通过遍历树结构可以检索任意XML 节点,读取它的属性和值。而且通常情况下,可以借助XPath,直接查询XML 节点。

SAX解析XML,是基于事件通知的模式,一边读取XML文档一边处理,不必等整个文档加载完之后才采取操作,当在读取解析过程中遇到需要处理的对象,会发出通知对其进行处理。

一般在iOS平台下,比较常用的XML解析类库有如下几种:

NSXMLParser,http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html ,这是一个SAX方式解析XML的类库,默认包含在iOS SDK中,使用也比较简单。

libxml2,http://xmlsoft.org/,是一套默认包含在iOS SDK中的开源类库,它是基于C语言的API,所以使用起来可能不如NSXML方便。这套类库同时支持DOM和SAX解析,libxml2的SAX解析方式还是非常酷的,因为它可以边读取边解析,尤其是在从网上下载一个很大的XML文件,就可以一边下载一边对已经下载好的内容进行解析,极大的提高解析效率。

TBXML,http://www.tbxml.co.uk/TBXML/TBXML_Free.html,这是一套轻量级的DOM方式的XML解析类库,有很好的性能和低内存占用,不过它不对XML格式进行校验,不支持XPath,并且只支持解析,不支持对XML进行修改。

TouchXML,https://github.com/TouchCode/TouchXML,这也是一套DOM方式的XML解析类库,支持XPath,不支持XML的修改。

KissXML,http://code.google.com/p/kissxml/,这是一套基于TouchXML的XML解析类库,和TouchXML相比,支持了XML的修改。

TinyXML,http://www.grinninglizard.com/tinyxml/,这是一套小巧的基于C语言的DOM方式进行XML解析的类库,支持对XML的读取和修改,不直接支持XPath,需要借助另一个相关的类库TinyXPath才可以支持XPath。

GDataXML,http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/,这是一套Google开发的DOM方式XML解析类库,支持读取和修改XML文档,支持XPath方式查询。

那么对于如何在项目中选择合适的XML解析类库呢?网上已经有人对这几款XML类库做过分析和对比,可参考《How To Choose The Best XML Parser for Your iPhone Project》http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project 一文,基本比较准确和客观,文中建议:

如果是读取很小的XML文档,性能基本上没有什么差别,不过从调用的方便性来说,建议使用TouchXML、KissXML或GDataXML

如果是需要读取和修改XML文档,建议使用KissXML或GDataXML

如果需要读取非常大的XML文档,则建议使用libxml2或TBXML

如果你不想去调用第三方类库,那么使用NSXML也可以

安装说明

GDataXML

1. 从http://code.google.com/p/gdata-objectivec-client/downloads/list下载“gdata-objective-c client library.”

2. 解压缩文件,找到Source\XMLSupport,并且将其中的GDataXMLNode.h 和 GDataXMLNode.m文件拖到项目中

3. 选中项目,选中“Build Settings”标签页

4. 将Build Settings页中,顶部的“Basic”标签切换到“All”

5. 找到“Paths\Header Search Paths”项,并添加“/usr/include/libxml2”到列表中

6. 找到“Linking\Other Linker Flags”项,并添加“-lxml2”到列表中

详解iOS平台XML解析类库对比和安装说明

在需要调用GDataXML的代码文件头部,加入:

  1. #import “GDataXMLNode.h” 

TouchXML

1. 从https://github.com/TouchCode/TouchXML下载最新TouchXML源码

2. 解压后,将其中的Sources目录下的文件和目录都拖到项目中

3. 选中项目,选中“Build Settings”标签页

4. 将Build Settings页中,顶部的“Basic”标签切换到“All”

5. 找到“Paths\Header Search Paths”项,并添加“/usr/include/libxml2”到列表中

6. 找到“Linking\Other Linker Flags”项,并添加“-lxml2”到列表中

在需要调用TouchXML的代码文件头部,加入:

  1. #import “TouchXML.h” 

TBXML

1. 从http://www.tbxml.co.uk/TBXML/TBXML_Free.html下载最新TBXML源码

2. 解压后,将其中的TBXML.h, TBXML.m, NSDataAdditions.h和NSDataAddtions.m四个文件拖到项目中

3. 添加对libz.dylib类库的应用

在需要调用TBXML的代码文件头部,加入:

  1. #import “TBXML.h” 

使用说明

GDataXML

读取XML 文件,并解析成为DOM文档对象示例:

  1. NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"xml"];  
  2. NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath];  
  3. NSError *error;  
  4. GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error];  
  5. if (doc == nil) { return nil; }  
  6. NSLog(@"%@", doc.rootElement);  
  7. [doc release];  
  8. [xmlData release]; 

小结:详解iOS 平台XML 解析类库对比和安装说明的内容介绍完了,希望本文对你有所帮助!

分享到:
评论

相关推荐

    iOS之数据解析之XML解析详解

    在iOS开发中,对XML数据进行解析是一项常见的任务,尤其是在需要处理网络传输的配置信息、内容订阅(如RSS源)或其它需要以结构化方式传输文本数据的场景中。XML解析的两种主要方法是DOM(文档对象模型)解析和SAX...

    MNnetwork第三方类库

    MNnetwork是一款在iOS和macOS平台上广泛使用的网络请求类库,它极大地简化了网络编程的复杂性,提高了开发效率。本文将深入探讨MNnetwork类库的设计理念、主要功能以及使用方法。 ### 一、设计理念 MNnetwork类库...

    uniapp基础开发类库,空的项目,包含一些请求方法,和一些基础快捷方法

    【uniapp基础开发类库详解】 uniAPP是一个跨平台的前端框架,由DCloud(即北京动力节点信息科技有限公司)开发,它允许开发者使用一套代码编写应用,同时兼容iOS、Android、H5、小程序以及快应用等多个平台。本项目是...

    POCO C++(中文说明文档).rar

    - **XML处理**: 内置XML解析器和生成器,便于数据交换和配置文件处理。 - **JSON支持**: 支持JSON序列化和反序列化,方便与Web服务交互。 - **加密与安全**: 包含加密库,支持SSL/TLS协议,确保数据传输的安全性...

    C#教程C#教程C#教程

    随着.NET Core的发布,C#现在可以用于跨平台开发,包括iOS、Android和Linux。Xamarin是C#进行移动开发的平台,允许使用C#构建原生的iOS和Android应用。 通过学习以上知识点,你可以掌握C#编程的基础,并能够构建...

    pafa3.0开发技术

    5. **移动应用开发**:Pafa 3.0的轻量级特性使其适用于Android和iOS平台的后端服务开发。 四、学习与进阶 深入学习Pafa 3.0的Java基础类库,开发者可以参考官方文档、在线教程以及开源社区中的示例代码。同时,...

    FotoradarAlert:FotoradarAlert - 应用程序显示基于 XML 文件的主动测速雷达

    Java强大的类库支持和丰富的开发工具,使得开发者能够轻松处理XML解析、网络通信、地理位置服务等功能。在Java中,可以使用DOM、SAX或StaX等解析器来读取和解析XML文件,获取雷达数据。同时,Java还提供了Location ...

    poco+openssl

    首先,Poco库是一个开源的C++类库集合,它提供了一系列用于构建网络应用程序、数据库连接、XML解析、JSON处理等功能的类和方法。Poco库的设计目标是跨平台,可以在多种操作系统上运行,包括Windows、Linux、macOS、...

    iOS支付宝支付方法详解

    在iOS应用开发中,集成支付宝支付功能是一项常见的需求。本文将详细介绍如何在iOS项目中集成支付宝SDK,并解决在集成过程中可能遇到的错误。 首先,你需要从支付宝提供的SDK下载地址...

    Android 平台 HTML5 应用开发

    它允许开发者利用 HTML5、CSS 和 JavaScript 这些 Web 开发技术来创建原生应用程序,并且能够兼容多种移动操作系统平台,例如 Android 和 iOS。 本篇内容将详细介绍如何在 Android 平台上使用 PhoneGap 进行 HTML5 ...

    POCO库及文档

    - **XML**:实现了轻量级的XML解析器和生成器,支持DOM和SAX解析模式。 - **JSON**:提供JSON对象模型,支持JSON的解析和序列化。 - **加密**:包含了OpenSSL库的封装,支持加密和哈希算法。 - **文件系统**:提供了...

    Qt开发及实例,涉及QT各模块

    **Qt开发及实例详解** ...在深入学习Qt开发时,开发者需要掌握C++基础知识,熟悉Qt类库,理解面向对象编程思想,并对所开发平台的特性和需求有所了解。此外,不断实践和参考官方文档及社区资源将有助于提升Qt开发技能。

    商品混凝土实时生产调度系统Web Service统一数据接口

    C#是一种由微软公司开发的面向对象的编程语言,它在.NET框架上运行,提供了丰富的类库和强大的功能,特别适合于构建复杂的、跨平台的应用程序。在本系统中,C#被用来编写Web Service,确保了数据接口的稳定性和效率...

    QT中文参考资料

    10. **XML和JSON处理**:QT提供XML和JSON解析及序列化功能,方便数据交换和存储。 11. **设备访问**:QT可以访问各种硬件设备,如摄像头、打印机、蓝牙等,提供了丰富的硬件抽象层接口。 QT中文参考文档通常会涵盖...

    cocos2d-x3.1实例—微信打飞机源码及素材

    《cocos2d-x3.1实战:微信打飞机游戏源码解析与素材详解》 在移动游戏开发领域,cocos2d-x是一款广受欢迎的开源游戏引擎,它基于C++,并支持跨平台开发,涵盖了iOS、Android、Windows等多个操作系统。本篇将深入...

    Qt-unified-windows-x86-3.2.3-online.rar

    **Qt集成开发环境详解** Qt是一款跨平台的应用程序开发框架,由挪威的Trolltech公司(现为Nokia公司的一部分)开发,广泛应用于图形用户界面、网络编程、多媒体处理等多个领域。Qt支持Windows、Linux、macOS、...

    appium环境搭建实战

    Appium是一款开源的自动化测试工具,支持iOS和Android平台,可以对原生应用、混合应用以及移动Web应用进行自动化测试。为了确保Appium能够正常工作,我们需要正确地安装一系列必要的软件和配置环境变量。 #### 二、...

    QT中文帮助

    4. **QT模块详解**:详细介绍如QNetwork、QSql、QXml等各个模块的功能和使用方法。 5. **示例代码**:提供丰富的代码示例,帮助理解各种功能的实际应用。 6. **调试与测试**:介绍如何使用QT Creator进行调试和单元...

    J2ME-API.rar_j2me api

    J2ME API是J2ME的核心组成部分,为开发者提供了丰富的类库和接口,用于构建功能强大的移动应用程序。 1. **配置与Profile** J2ME的体系结构基于配置和Profile的概念。配置定义了Java虚拟机(JVM)的基本特性和内存...

    anji-plus-AJ-Captcha-Images-master.zip

    4. **多平台支持**:为了适应iOS、安卓和小程序等不同平台,后端接口需要设计得足够通用,能够处理各种平台的请求。前端适配则依赖于跨平台开发框架,例如Vue可以配合Weex或uni-app实现小程序和移动App的兼容。 5. ...

Global site tag (gtag.js) - Google Analytics