XML 解析类库对比

摘要:
在iPhone开发中,有许多XML解析选项。iOS SDK单独提供了NSXMLParser和libxml2类库,以及TBXML、TouchXML、KissXML、TinyXML和GDataXML等第三方类库。通常,在iOS平台上,常见的XML解析类库如下:NSXMLParser这是一个SAX解析类库,默认情况下包含在iOS SDK中,易于使用。TBXML是一个轻量级的DOM XML解析类库,具有良好的性能和较低的内存消耗。但是,它不验证XML格式,不支持XPath,只支持解析,不支持XML修改。TouchXML这也是一组DOM模式下的XML解析类库。它支持XPath,不支持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解析类库有如下几种:

  1. NSXMLParser 这是一个SAX方式解析XML的类库,默认包含在iOS SDK中,使用也比较简单。
  2. libxml2 是一套默认包含在iOS SDK中的开源类库,它是基于C语言的API,所以使用起来相对不太方便,但它同时支持DOM和SAX解析,尤其是它的SAX解析方式很酷,可以边读边解析,非常适用于从网上下载一个很大的XML文件,可极大提供解析效率。
  3. TBXML 是一套轻量级的DOM方式的XML解析类库,有很好的性能和低内存占用,不过它不对XML格式进行校验,不支持XPath,并且只支持解析,不支持对XML进行修改。
  4. TouchXML 这也是一套DOM方式的XML解析类库,支持XPath,不支持XML的修改。
  5. KissXML 这是一套基于TouchXML的XML解析类库,只不过实现了支持XML的修改。
  6. TinyXML 这是一套小巧的基于C语言的DOM方式进行XML解析的类库,支持对XML的读取和修改,不直接支持XPath,需要借助TinyXPath才可以支持XPath。
  7. GDataXML 它是Google开发的DOM方式XML解析类库,支持读取和修改XML文档,支持XPath方式查询。

以上几大类库,在读取很小的XML文档上,性能基本没有差别,不过从调用的方便性来说,建议使用TouchXML、KissXML或GDataXML。

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

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

不想使用第三方类库,则就使用iOS自带的NSXMLParser。

免责声明:文章转载自《XML 解析类库对比》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NPM使用总结解决layui数据表格Date日期格式的回显Object的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

三把利器快速制作代码帮助文档

1、前言相信不少麻油都已经积累了属于自己的代码库了,不知道是否有过这样的经历: A:听说你上次写了个通用XXX类库啊,我正好要用到,麻烦把dll发我一下。 B:好的,你等一下,我发给你。。。 。。。十分钟后 A:喂,你这个类是怎么用的啊,有没有帮助文档啊。 B:汗,没来得及做,我来和你说吧。。。 一个好用的类库,如果能配上一个好的说明文档(最好还带搜索功能...

python解析xml文件之xml.etree.cElementTree和xml.etree.ElementTree区别和基本使用

1、解析速度:ElementTree在 Python 标准库中有两种实现。一种是纯 Python 实现例如 xml.etree.ElementTree ,另外一种是速度快一点的 xml.etree.cElementTree 。你要记住: 尽量使用 C 语言实现的那种,因为它速度更快,而且消耗的内存更少。 2、调试区别 使用cElementTree的话,在p...

Android Demo练习体会

前言   由于昨天刚搭建好Android使用环境,非常想体验下Android开发过程,今天下班便在网上找了一些资料,根据资料DEMO做一个小程序来熟悉其开发过程。首先推荐一个网站http://www.inandroid.cn/bbs/forum-15-1.html。里面的内容对于初学还是不错的。为了开发方便API文档是不可少的,但是目前网上还没有中文的,所...

【持续集成】如何用sonar-pmd插件集成pmd-xml的规则

需求sonar-pmd插件只有添加了pmd的java规则,现在需要添加pmd的xml规则,更准确是添加自定义的xml规则. 步骤:为了更好集成和示范,选择前人已集成p3c的sonar-pmd插件.url: https://github.com/mrprince/sonar-p3c-pmdgit clone 到本地集成分为两个环节:1.规则配置2.源码修改...

Struts核心技术简介

Struts核心技术简介 1、Struts内部机制 Struts是一种基于MVC经典设计模式的开发源代码的应用框架,它通过把Servlet、JSP、JavaBean、自定义标签和信息资源整合到一个统一的框架中,为Web开发提供具有高可配置性的MVC开发模式。 Struts体系结构实现了MVC设计模式的概念,它将Model、View、和Controller分...

Servlet(三)

dom4j 元素对象获取指定子元素 element("名字") ServletConfig: 1.在Servlet运行时,需要获取servlet的配置信息 可以使用servletConfig来进行获取 由tomcat创建 在servlet实例化的时候,把servlet的一些配置信息放入ServletConfig对象 2.获取servletConfig:in...