[iphone]XML 解析 之 TBXML 介绍
?總的來說,iphone 上可用的解析XML的方式大概有2種類型的。
?
1.Tree-based API:這種API的處理方式是將XML的結(jié)構(gòu)看成是樹,然后把樹的各部分看成一個(gè)對(duì)象來處理,這就是我們說的DOM (Document Object Model)方式。在iPhone的SDK里包含了一個(gè)libxml2的框架(Framework)就能進(jìn)行DOM解析方式。Google的GDataXML也是基于libxml2的,因此在使用GDataXML之前,你需要先導(dǎo)入libxml2。
?
2.Event-driven API:這種方式通常用于解析基于的事件,SAX解析方式就是這種解析方式的代表。在iPhone開發(fā)的,也可以利用這種方式來解析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
?介紹一種輕量級(jí)的XML解析方式,TBXML。
按著以上兩個(gè)分類的話,算是DOM 的解析方式。需要去找尋root 節(jié)點(diǎn)。然后按著名字順序查找。找到某個(gè)節(jié)點(diǎn)之后,如果需要找尋孩子信息,那么使用這個(gè)節(jié)點(diǎn)做為parent,繼續(xù)向里面查找。
?
正如他的官方介紹所說TBXML 具有如下特點(diǎn):
?
速度快,效率高,占用的額外資源少。耗時(shí)短。
本人看來,用起來確實(shí)方便。上手容易,快速。
常用的初始化方式有。如下幾種。?
?
+ (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
?
?靜態(tài)方法也不過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;
?
?
上一個(gè)本人實(shí)際的例子,大家一看就行,你懂的。。
?
?
+(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
?
?
??
?
轉(zhuǎn)載于:https://www.cnblogs.com/AlexLiu/archive/2010/10/25/1860292.html
總結(jié)
以上是生活随笔為你收集整理的[iphone]XML 解析 之 TBXML 介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: bulk of the 用法_代词的用法
- 下一篇: java 七巧板油漆问题_七巧板颜色填充
