[iphone]XML 解析 之 TBXML 介绍

news/2024/7/24 9:26:48 标签: 移动开发

 总的来说,iphone 上可用的解析XML的方式大概有2种类型的。

 

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

 

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

 r TBXML are:

  • XML files conforming to the W3C XML spec 1.0 should be passable
  • XML parsing should incur the fewest possible resources
  • XML parsing should be achieved in the shortest possible time
  • It shall be easy to write programs that utilise TBXML

Design Goals

Check out this post for a good comparison of XML parsers. “How To Chose The Best XML Parser for Your iPhone Project”

Performance

  • TBXML.zip
  • TBXML-Books.zip
  • Version changes

 介绍一种轻量级的XML解析方式,TBXML。

按着以上两个分类的话,算是DOM 的解析方式。需要去找寻root 节点。然后按着名字顺序查找。找到某个节点之后,如果需要找寻孩子信息,那么使用这个节点做为parent,继续向里面查找。

 

正如他的官方介绍所说TBXML 具有如下特点:

 

速度快,效率高,占用的额外资源少。耗时短。

本人看来,用起来确实方便。上手容易,快速。

常用的初始化方式有。如下几种。 

 

+ (id)tbxmlWithURL:(NSURL*)aURL;

+ (id)tbxmlWithXMLString:(NSString*)aXMLString;

+ (id)tbxmlWithXMLData:(NSData*)aData;

+ (id)tbxmlWithXMLFile:(NSString*)aXMLFile;

+ (id)tbxmlWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension;


- (id)initWithURL:(NSURL*)aURL;

- (id)initWithXMLString:(NSString*)aXMLString;

- (id)initWithXMLData:(NSData*)aData;

- (id)initWithXMLFile:(NSString*)aXMLFile;

- (id)initWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension;


@end


 

 静态方法也不过7种而已。

 

// ================================================================================================

//  TBXML Static Functions Interface

// ================================================================================================


@interface TBXML (StaticFunctions)


+ (NSString*) elementName:(TBXMLElement*)aXMLElement;

+ (NSString*) textForElement:(TBXMLElement*)aXMLElement;

+ (NSString*) valueOfAttributeNamed:(NSString *)aName forElement:(TBXMLElement*)aXMLElement;


+ (NSString*) attributeName:(TBXMLAttribute*)aXMLAttribute;

+ (NSString*) attributeValue:(TBXMLAttribute*)aXMLAttribute;


+ (TBXMLElement*) nextSiblingNamed:(NSString*)aName searchFromElement:(TBXMLElement*)aXMLElement;

+ (TBXMLElement*) childElementNamed:(NSString*)aName parentElement:(TBXMLElement*)aParentXMLElement;


@end 

 

 

上一个本人实际的例子,大家一看就行,你懂的。。

 

 

+(NSString *)getOPFFolderName:(NSString *)prefixName

{

//doc/ldj/META-INF/container.xml;

//<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">

// <rootfiles>

// <rootfile full-path="OPS/fb.opf" media-type="application/oebps-package+xml"/>

// </rootfiles>

// </container>

NSString *path = [NSString stringWithFormat:[NSHomeDirectory() 

stringByAppendingPathComponent:

@"/Documents/%@/META-INF/container.xml"],prefixName];


TBXML *containeXML = [TBXML tbxmlWithURL:[NSURL fileURLWithPath:path]];

TBXMLElement *root = containeXML.rootXMLElement;

//TBXMLElement *container= [TBXML childElementNamed:@"container" parentElement:root];


TBXMLElement *rootfile = [TBXML childElementNamed:@"rootfile" parentElement:

  [TBXML childElementNamed:@"rootfiles" parentElement:

  root]];

return [TBXML valueOfAttributeNamed:@"full-path" forElement:rootfile];

} 

 

 参考文章:

 

http://www.tbxml.co.uk/TBXML/TBXML_Free.html 

http://www.norkoo.com/show/New_Tech/IPhone/dfdikhjijkagekigicgkgcdkiheb.aspx

 

 

  

 


http://www.niftyadmin.cn/n/1180405.html

相关文章

vue-element-admin源码解读——项目启动过程

vue-element-admin源码解读——项目组件布局及状态管理vue-element-admin源码解读——项目启动过程vue-element-admin源码解读——数据Mock vue-element-admin是一款优秀的前端框架&#xff0c;使用了最新的前端技术&#xff0c;内置了(Vue-i18)国际化解决方案&#xff0c;动态…

三大平衡树(Treap + Splay + SBT)总结+模板

Treap树 核心是 利用随机数的二叉排序树的各种操作复杂度平均为O(lgn) Treap模板&#xff1a; #include <cstdio> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <cstdlib> #include <cmath…

View与Control间的数据交互

View与Control间的数据交互 1.ViewBag.Name "Name1" 2.ViewData["VD"] "view data"; 3.TempData["TD"] "temp data"; 4.Model ViewBag和ViewData只在当前的Action中有效&#xff0c;生命周期和 View 相同&#xff1b; Tem…

vue-element-admin源码解读——数据Mock

vue-element-admin源码解读——项目组件布局及状态管理vue-element-admin源码解读——项目启动过程vue-element-admin源码解读——数据Mock MOCK是指模拟服务器按照一定的规则或者设定的数据&#xff0c;对客户端的请求进行响应。换个说法就是可以不用搭建后台服务器&#xff0…

JQuery Easy Ui dataGrid 数据表格

2019独角兽企业重金招聘Python工程师标准>>> 数据表格 - DataGrid 内容 概况 使用方法 数据表格属性 数据列属性 编辑 数据视图 事件 方法 继承$.fn.panel.defaults&#xff0c;使用$.fn.datagrid.defaults重载默认值。. 数据表格显示的数据以表格的形式&#xff0c…

vue-element-admin源码解读——项目组件布局及状态管理

vue-element-admin源码解读——项目组件布局及状态管理vue-element-admin源码解读——项目启动过程vue-element-admin源码解读——数据Mock vue-element-admin作为一款优秀的前端解决方案&#xff0c;整个框架的结构非常清晰&#xff0c;同时利用Vuex和Vue Router来实现SPA(单页…

影随心动

好久没进园子了&#xff0c;今天看到一位叫yingsuixindong的博主的随笔&#xff0c;发现他从2012年开始立志写随笔后&#xff0c;接下来几乎每天都坚持写一篇。突然感觉自己也有写的冲动&#xff01;&#xff01;总得留下点痕迹不是&#xff1f; 转载于:https://www.cnblogs.co…

免费遥感数据下载资源

在资源生态环境方面的应用或研究&#xff0c;数据源可选择Landsat、资源卫星-2A&#xff08;B&#xff09;、环境小卫星数据、Modis数据、NOAA的AVHHR、SRTM的地形数据&#xff0c;这些数据基本可以免费获取。 中国资源卫星数据服务网 http://www.cresda.com 说明&#xff1…