`
mmdev
  • 浏览: 12916410 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

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解析demo 提供几种常用方法 运行后在后台打出

    ios 简单xml解析DEMO绝对可用

    ios开发,简单的xml解析,亲测可用,自己认真研究研究,不要遇到点问题就放弃。

    IOS中XML解析类

    对XML格式的文件进行解析时 用得到的,可以直接下载使用

    iOS的XML解析库 TouchXML.zip

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

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

    NULL 博文链接:https://justcoding.iteye.com/blog/1469521

    Tinyxml iOS xml 解析

    Tinyxml iOS xml 解析 Tinyxml iOS xml 解析

    ios_XML_解析

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

    IOS版本XML解析类

    比原生的解析要易用很多,简单效率,是解析XML的很好的选择,推荐大家使用

    iOSXML数据解析

    XMLReader,XML解析,用于soap请求返回XML数据的解析

    ios-iOS xml解析.zip

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

    iOS xml解析和json解析demo

    iOS xml解析和json解析demo

    ios xml解析

    该demo中描述了2种解析模式,一是苹果自带的,二是TBXMl解析,代码中注释相当的详细啊,如果TBXML解析 有问题 请对照我博客ios xml解析,上面写得相当清楚

    iOS开发使用XML解析网络数据

    2、IOS中XML解析方案有很多种:  2-1、第三方框架:  libxml2:纯C语言,默认包含在iOS SDK中,同时支持DOM和SAX解析  GDataXML:DOM方式解析,由Google开发,基于libxml2  2-2、苹果原生  NSXMLParser:SAX...

    IOS解析XML文件

    见博客:http://blog.csdn.net/baidu_nod/article/details/36515883

    IOS应用源码——XML解析.zip

    IOS应用源码——XML解析.zip

    ios开发 XML解析

    XML解析工具类

    ios-iOS中的json和xml解析.zip

    SAX 解析: 这是苹果系统自带的xml解析方法,特点就是:逐行解析, 这样方式效率低,但是可以快速的判断定位到哪一行出错。 DOM解析:全局解析,效率高,但是不容易定位到出错的位置。 3.个人总结 ...

    ios-XML解析.zip

    XML解析与表结合使用

Global site tag (gtag.js) - Google Analytics