博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML Parser 概述
阅读量:6263 次
发布时间:2019-06-22

本文共 1289 字,大约阅读时间需要 4 分钟。

XML Parser 是做网络应用开发常用到的,iPhone SDK 自带了两个 libraries,除此之外还有很多第三方的 XML Parser libraries,包括 TBXML, TouchXML, KissXML, TinyXML, and GDataXML,这里就有一个问题,做开发的时候该选择哪一个适合自己的?CocoaChina 会员 “jjyycwy” 为我们做了具体介绍:

    首先要清楚两个概念:SAX 和 DOM。

  • SAX,Simple API for XML,属于 event driven,即所谓的事件驱动。当满足一定的条件时,相应的事件就会被驱动,常用的事件类似于ErrorOccur,DataRecieved。
  • DOM,Document Object Model,简单来讲,就是要把文档完全下载完以后,然后对其里面的内容、objects等进行操作。

    弄清两个概念,再来看都有哪些可以用的 Libraries。

  • NSXMLParser,SAX 型,这是 iPhone SDK 自带的,用 Objective C 写的,直接用,但是并不是最简单的。
  • libxml2,开源的,也是 SDK 自带的,用的是 C 语言,同时支持 SAX 和 DOM。它有一个非常好的特性,parse 和 read 同时进行,也就是说你不用等到整个文档下载完以后才读,比如你需要 parse 一个非常大的文件,你不希望用户等你 parse 完才看到内容,你可以这 parse 的同时把内容呈现出来。
  • TBXML,特点是小,DOM 型,可以在低内存损耗的条件下快速提取内容,缺点也是太简单,不支持 xPath,并且只能读,不能写,也就是说,你读完了 xml,想修改里面的内容再发送,对不起,爷没这功能。
  • TouchXML,特点几乎与上面那位一样,简单,只读不写,但是支持 xPath。
  • KissXML,实际上是基于 TouchXML 的,只是增加了写的功能,可以编辑。
  • TinyXML,是一个小的 C 语言 DOM 型,不支持 xPath。
  • GDataXML,Google 开发的,基于 Objective-C 的 parser。

    哪一个更好呢?

    Apple 有一个叫 XMLPerformance的SampleCode,里面分别用 NSXMLParser 和 libxml2 两种方法 parse 了一个 900KB 大小的 xml 文件,300 首 iTunes 的歌。对于各种 parser 的方式,有个老美用自己的 iPhone 做了测试,结果如下图所示。

    图中可以看出 SDK 自带的 NSXML 实际上是最慢的。TBXML 是最快的,当然,如前面所说,它简单,功能也少。个人觉得 libxml2 是比较好的方案,不仅同时支持 SAX 和 DOM,而且功能强大,支持 parse 和 read 同时进行,支持 xpath。当然具体问题需要具体分析。总体来讲,DOM 所占用的内存要大于 SAX,除了 TBXML,TB 是非常简单而有效率的。

帖子地址 ,欢迎参与讨论。

转载地址:http://lgwpa.baihongyu.com/

你可能感兴趣的文章
Linux 绝对路径与相对路径
查看>>
海伦公式
查看>>
MatlabTrick
查看>>
leetcode — minimum-depth-of-binary-tree
查看>>
Java代码风格和在idea中的一些设置
查看>>
poj 1730
查看>>
(匹配)Courses -- hdu --1083
查看>>
(并查集)Connections in Galaxy War -- zoj --3261 还没写
查看>>
bit类型数据,是1=false 还是0=false
查看>>
(转)Eclipse中junit框架的使用——单元测试
查看>>
lock关键字理解
查看>>
20172303 2018-2019-1 《程序设计与数据结构》第3周学习总结
查看>>
[Javascript]史上最短的IE浏览器判断代码
查看>>
关于《大道至简》第五章的收获
查看>>
网卡驱动
查看>>
kinect sdk开发入门WPFdemo笔记
查看>>
Server.Transfer详细解释
查看>>
java单链表的增、删、查操作
查看>>
The working copy at 'xxx' is too old 错误解决
查看>>
jadclipse
查看>>