iOS开发中常见的解析XML的类库以及简要安装方法

guaiqingqin

guaiqingqin

2016-02-19 10:55

想要天天向上,就要懂得享受学习。图老师为大家推荐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. 解压缩文件,找到SourceXMLSupport,并且将其中的GDataXMLNode.h 和 GDataXMLNode.m文件拖到项目中
3. 选中项目,选中“Build Settings”标签页
4. 将Build Settings页中,顶部的“Basic”标签切换到“All”
5. 找到“PathsHeader Search Paths”项,并添加“/usr/include/libxml2”到列表中
6. 找到“LinkingOther Linker Flags”项,并添加“-lxml2”到列表中

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

在需要调用GDataXML的代码文件头部,加入:
代码如下:
#import “GDataXMLNode.h”

TouchXML
1. 从https://github.com/TouchCode/TouchXML下载最新TouchXML源码
2. 解压后,将其中的Sources目录下的文件和目录都拖到项目中
3. 选中项目,选中“Build Settings”标签页
4. 将Build Settings页中,顶部的“Basic”标签切换到“All”
5. 找到“PathsHeader Search Paths”项,并添加“/usr/include/libxml2”到列表中
6. 找到“LinkingOther 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]; 

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

iOS开发中常见的解析XML的类库以及简要安装方法

编程语言 网络编程
iOS开发中常见的解析XML的类库以及简要安装方法

iOS开发中常见的项目文件与MVC结构优化思路解析

编程语言 网络编程
iOS开发中常见的项目文件与MVC结构优化思路解析

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Excel中常见的几个问题以及解决方法

电脑入门
Excel中常见的几个问题以及解决方法

理解iOS多线程应用的开发以及线程的创建方法

编程语言 网络编程
理解iOS多线程应用的开发以及线程的创建方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Ajax 程序开发中常见问题

Web开发
Ajax 程序开发中常见问题

iOS开发中使用NSURLConnection类处理网络请求的方法

编程语言 网络编程
iOS开发中使用NSURLConnection类处理网络请求的方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Objective-C的MKNetworkKit开发框架解析

Objective-C的MKNetworkKit开发框架解析

agentsvr.exe进程是什么

agentsvr.exe进程是什么
下拉加载更多内容 ↓