`
473687880
  • 浏览: 535880 次
文章分类
社区版块
存档分类
最新评论

iOS中XML解析

 
阅读更多

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

1.Tree-based API:这种API的处理方式是将XML的结构看成是树,然后把树的各部分看成一个对象来处理,这就是我们说的DOM (Document Object Model)方式。在iPhoneSDK里包含了一个libxml2的框架(Framework)就能进行DOM解析方式。GoogleGDataXML也是基于libxml2的,因此在使用GDataXML之前,你需要先导入libxml2

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


2.Event-driven API:这种方式通常用于解析基于的事件,SAX解析方式就是这种解析方式的代表。在iPhone开发的,也可以利用这种方式来解析XML,不过这可不是Iphone SDK的属性啊,而是Objective-C的功能。在Objectvie-C种有专门解析XML的类NSXMLParser

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




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

NSXMLParser这是一个SAX方式解析XML的类库,默认包含在iOS SDK中,使用也比较简单。

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

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

TouchXML这也是一套DOM方式的XML解析类库,支持XPath,不支持XML的修改。

KissXML这是一套基于TouchXML的XML解析类库,和TouchXML相比,支持了XML的修改。

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

GDataXML这是一套Google开发的DOM方式XML解析类库,支持读取和修改XML文档,支持XPath方式查询。

那么对于如何在项目中选择合适的XML解析类库呢?网上已经有人对这几款XML类库做过分析和对比,可参考《How To Choose 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”到列表中

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

#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的代码文件头部,加入:

#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的代码文件头部,加入:

#import “TBXML.h”

使用说明
GDataXML

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

NSString *filePath = [[NSBundle mainBundle] pathForResource:@”test” ofType:@”xml”];

NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath];

NSError *error;

GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error];

if (doc == nil) { return nil; }

NSLog(@”%@”, doc.rootElement);

[doc release];

[xmlData release];


分享到:
评论

相关推荐

    ios中xml解析demo

    iOS中的XML解析主要有以下几种方法: 1. **NSXMLParser**: NSXMLParser是Apple提供的一个基于事件驱动的XML解析器。它逐行读取XML文档,遇到每个元素、属性或其他XML结构时都会触发相应的代理方法。开发者需要...

    IOS中XML解析类

    本篇文章将详细探讨iOS中XML解析的相关知识点,以帮助开发者更好地理解和应用。 ### 1. XML基础知识 XML是一种标记语言,它的设计目的是为了传输和存储数据。XML文件由元素(Element)、属性(Attribute)、文本...

    ios 简单xml解析DEMO绝对可用

    本教程将介绍如何在iOS应用中实现简单的XML解析,并提供了一个名为"UITableViewTricks"的DEMO,供开发者们参考学习。 XML文件结构清晰,易于理解,但在iOS中解析XML数据并非内置功能,需要借助第三方库或者Apple...

    iOS中XML解析 (一) TBXML (实例:打印xml内容及存储到数组)

    TBXML是一个轻量级的XML解析器,由TonyBuckett开发,它的设计目标是提供快速、高效的XML解析功能,特别适合于内存有限的移动设备。TBXML利用苹果的Foundation框架,对XML文档进行逐节点的解析,避免一次性加载整个...

    IOS版本XML解析类

    因此,"IOS版本XML解析类"通常指的是第三方库,如GDataXML,这是一个在Objective-C中实现的XML解析库,提供了更易于理解和使用的API。 GDataXML,全称GDataXMLNode,是Google开发的一个开源项目,它为iOS和Mac OS X...

    iOS的XML解析库 TouchXML.zip

    iOS的XML解析库 TouchXML ,TouchXML 是使用 Objective-C 编写的 XML 解析器,适合在 iOS 和 Mac...

    ios交互和XML解析

    在iOS开发中,交互设计和XML解析是两个重要的技术领域。iOS交互主要涉及用户界面(UI)设计和用户体验(UX)优化,而XML解析则关乎数据的读取、存储和处理。下面将详细阐述这两个方面的内容。 首先,iOS交互设计是...

    iOSXML数据解析

    在iOS中,XML解析通常有以下几种方式:NSXMLParser、GDataXML、XMLReader以及libxml2库。其中,XMLReader因其性能和内存管理的优势,成为处理大量XML数据的理想选择。 首先,我们需要了解XML的基本结构。XML文档由...

    IOS解析XML文件

    在iOS开发中,解析XML文件是一项常见的任务,特别是在与服务器进行数据交互时。XML(Extensible Markup Language)是一种用于标记数据的语言,...你可以通过打开并研究这个项目来进一步了解XML解析在实际应用中的实现。

    ios_XML_解析

    iOS xml 解析 本来是喜欢用json的,可服务端的那位大神居然搞不出来 他说他是直接返回一串字符串的,是底层给疯装成xml返回的 嗨,累 网上搜了下,有说用sdk自带的NSXMLParse, 有说用google提供的GDataXML, 还有...

    ios-XML解析.zip

    本资源“ios-XML解析.zip”显然关注的是如何在iOS应用中有效地处理XML数据,并将其与表格展示相结合。下面我们将深入探讨iOS中的XML解析方法以及如何将解析后的数据呈现到表格视图中。 首先,让我们了解XML的基本...

    iOS xml解析和json解析demo

    在这个"iOS xml解析和json解析demo"中,我们将探讨如何在iOS应用中处理这两种数据格式。 首先,我们来看XML解析。在iOS中,有两种主要的XML解析方式:NSXMLParser和XMLParser。NSXMLParser是基于事件驱动的解析器,...

    ios xml解析

    此外,你提到的博客“ios xml解析”应该提供了TBXML的具体使用方法和常见问题解答,这将是你解决问题的重要资源。务必确保在使用TBXML时正确处理错误,例如,检查解析过程中是否出现网络错误、文件不存在等问题。 ...

    Tinyxml iOS xml 解析

    Tinyxml 是一个开源的、轻量级的XML解析库,主要设计用于C++语言环境,包括iOS平台。在iOS开发中,XML(eXtensible Markup Language)是一种常见的数据交换格式,广泛应用于网络服务和配置文件。Tinyxml库提供了一个...

    ios-iOS xml解析.zip

    xml解析的两种常用方式, DOM解析:一次性将整个XML文档加载进内存,比较适合解析小文件,例如:GDataXml解析 SAX解析:从根元素开始,按顺序一个元素一个元素往下解析,比较适合解析大文件,例如:NSXMLParser解析

    iOS解析xml通用类

    首先,让我们了解一下XML解析的基本概念。XML是一种自描述性的标记语言,它通过标签(tag)来定义数据结构。解析XML文件是将XML数据转换为应用程序可以理解的形式的关键步骤。在iOS中,有多种解析XML的方法,如...

    ios开发 XML解析

    在iOS中,XML解析主要有两种方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个XML文档到内存,形成一个树形结构,适合小规模的XML处理;而SAX是事件驱动的解析器,逐行读取,不...

    iPhone IOS XML解析源代码

    在iOS开发中,了解和掌握XML解析是非常重要的技能。除了上述两种方法,还有其他的解析库如XMLDictionary,它提供了更简洁的API,以字典形式返回解析结果。不过,对于学习基础和理解不同解析方式的优缺点,这个...

Global site tag (gtag.js) - Google Analytics