KissXml API和配置.docx
- 文档编号:12228430
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:14
- 大小:22.44KB
KissXml API和配置.docx
《KissXml API和配置.docx》由会员分享,可在线阅读,更多相关《KissXml API和配置.docx(14页珍藏版)》请在冰豆网上搜索。
KissXmlAPI和配置
iPhone开发单例模式
2010年12月31日in开发bypimacun
// //Singlton.h //TestSinglton // //CreatedbyNorion10-12-1. //Copyright2010__MyCompanyName__.Allrightsreserved. //
#import
@interfaceSinglton:
NSObject{
} +(Singlton*)sharedSinglton; @end
// //Singlton.m //TestSinglton // //CreatedbyNorion10-12-1. //Copyright2010__MyCompanyName__.Allrightsreserved. //
#import“Singlton.h”
staticSinglton*sharedSinglton=nil;
@implementationSinglton +(Singlton*)sharedSinglton;{NSLog(@”%@”,NSStringFromSelector(_cmd)); @synchronized(self){ if(sharedSinglton==nil){ [[selfalloc]init];//初始化自己,调用allocWithZone:
} } returnsharedSinglton; } +(id)allocWithZone:
(NSZone*)zone{NSLog(@”%@”,NSStringFromSelector(_cmd)); @synchronized(self){ if(sharedSinglton==nil){ sharedSinglton=[superallocWithZone:
zone]; returnsharedSinglton;//assignmentandreturnonfirstallocation } } returnnil;//onsubsequentallocationattemptsreturnnil }
-(id)copyWithZone:
(NSZone*)zone{NSLog(@”%@”,NSStringFromSelector(_cmd)); returnself; }
-(id)retain{ //donothing,onlyreturnself; returnself; }
-(unsigned)retainCount{NSLog(@”%@”,NSStringFromSelector(_cmd)); returnUINT_MAX;//denotesanobjectthatcannotbereleased }
-(void)release{NSLog(@”%@”,NSStringFromSelector(_cmd)); //donothing }
@end
iPhone,设计模式
评论暂缺
KissXmlAPI
2010年12月31日in开发bypimacun
KissXml是iPhone平台目前比较好的xml解析&操作的框架,尤其是他集成了XPath功能,但是网上没有成型的api,就连KissXml自己也没有出过完整的api。
为了方便大家快速入门、使用KissXML,就勉强做了这个所谓的API,如有谬误,敬请斧正。
==========================================================
DDXMLNode(结点类,所有结点类的父类)
//创建元素结点的方法 +(id)elementWithName:
(NSString*)name; +(id)elementWithName:
(NSString*)nameURI:
(NSString*)URI; +(id)elementWithName:
(NSString*)namestringValue:
(NSString*)string; +(id)elementWithName:
(NSString*)namechildren:
(NSArray*)childrenattributes:
(NSArray*)attributes;
//创建属性结点 +(id)attributeWithName:
(NSString*)namestringValue:
(NSString*)stringValue; +(id)attributeWithName:
(NSString*)nameURI:
(NSString*)URIstringValue:
(NSString*)stringValue; //创建一个命名空间 +(id)namespaceWithName:
(NSString*)namestringValue:
(NSString*)stringValue; //创建处理指令,形如
namestringValue?
> +(id)processingInstructionWithName:
(NSString*)namestringValue:
(NSString*)stringValue; //创建一个注释结点 +(id)commentWithStringValue:
(NSString*)stringValue; //创建一个textValue结点 +(id)textWithStringValue:
(NSString*)stringValue;
#pragmamark————————Properties————————— //返回结点类型 -(DDXMLNodeKind)kind; //设置结点名 -(void)setName:
(NSString*)name; //获得结点名 -(NSString*)name;
//设置结点的stringValue,Element设置之后其子结点尽失,只剩下stringValue -(void)setStringValue:
(NSString*)string; //获得stringValue -(NSString*)stringValue;
#pragmamark————————TreeNavigation—————————— //返回当前结点在兄弟结点中的index -(NSUInteger)index; //返回当前结点在树中的level -(NSUInteger)level; //获得所在树的根结点 -(DDXMLDocument*)rootDocument; -(DDXMLNode*)parent;//获得父结点 -(NSUInteger)childCount;//获取子结点个数(所有的node子类) -(NSArray*)children;//子结点列表 -(DDXMLNode*)childAtIndex:
(NSUInteger)index;//指定index的子结点列表 -(DDXMLNode*)previousSibling;//上一个兄弟结点 -(DDXMLNode*)nextSibling;//下一个兄弟结点 -(DDXMLNode*)previousNode;//深度遍历顺序的上一个结点 -(DDXMLNode*)nextNode;//深度遍历顺序的下一个结点 -(void)detach;//当前结点所带子树,从父树上分离下来 -(NSString*)XPath;//当前结点所在树的XPath,[n]表示是(深度遍历顺序中)连续同名结点的第几个
#pragmamark————————QNames————————— -(NSString*)localName;//返回去掉第一个冒号和之前prefix之后的localName -(NSString*)prefix;//返回去掉第一个冒号和之后localName之后的prefix -(void)setURI:
(NSString*)URI;//设置URI,形如
只在attribute中设置xmlns属性之后,用URI的get方法是读不到的 -(NSString*)URI;//URI的get方法 +(NSString*)localNameForName:
(NSString*)name;//处理name获得localName的方法 +(NSString*)prefixForName:
(NSString*)name;//处理name获得prefixForName的方法
#pragmamark————————Output————————— //description&XMLString相同,等价于[XMLStringWithOptions:
0]
-(NSString*)description;
-(NSString*)XMLString;
//options>=0一行输出,且空标签不合并;option<0,合并空标签例如
-(NSString*)XMLStringWithOptions:
(NSUInteger)options;
#pragmamark———————— XPath/XQuery————————— //获得对应XPath的结点,Document和Element有不同表示(其实一样,都是从其子结点开始path) -(NSArray*)nodesForXPath:
(NSString*)xpatherror:
(NSError**)error;
==========================================================
DDXMLDocument(DOC根结点类)
//初始化 -(id)initWithXMLString:
(NSString*)stringoptions:
(NSUInteger)maskerror:
(NSError**)error;//用一段xml代码创建一颗dom树,mask无用,0即可。
-(id)initWithData:
(NSData*)dataoptions:
(NSUInteger)maskerror:
(NSError**)error;//用一段xml代码创建一颗dom树,mask无用,0即可,上一个就是调用此法
-(DDXMLElement*)rootElement;//获得根元素Element
-(NSData*)XMLData;//获得包含XMLString的NSData对象 -(NSData*)XMLDataWithOptions:
(NSUInteger)options;//获得包含XMLString的NSData对象,option>=0:
一行,不合并空元素;option<0:
合并,缩进;
==========================================================
DDXMLElement(元素结点类)
#pragmamark—————————Init————————— -(id)initWithName:
(NSString*)name;//创建名为name的Element -(id)initWithName:
(NSString*)nameURI:
(NSString*)URI;//创建名为name,且URI为URIString的Element -(id)initWithName:
(NSString*)namestringValue:
(NSString*)string;//创建名为name且只有一个textVaule结点的Element -(id)initWithXMLString:
(NSString*)stringerror:
(NSError**)error;//用一段xml子树代码创建一个Element对象
#pragmamark——————————Elementsbyname—————————— -(NSArray*)elementsForName:
(NSString*)name;//按照name获取Element列表 -(NSArray*)elementsForLocalName:
(NSString*)localNameURI:
(NSString*)URI;//按照LocalName和URI获取Element列表
#pragmamark——————————Attributes—————————— -(void)addAttribute:
(DDXMLNode*)attribute;//在属性列表最后添加一个信属性 -(void)removeAttributeForName:
(NSString*)name;//移除指定属性(属性列表里不存在同名的属性,诸如名如xmlns等URI其实不在属性列表里,虽然显示在属性的位置上) -(void)setAttributes:
(NSArray*)attributes;//为当前Element设置属性列表 -(DDXMLNode*)attributeForName:
(NSString*)name;//获得指定属性 -(NSArray*)attributes;//属性列表的get方法
#pragmamark——————————Namespaces—————————— //命名空间,形如:
nsName=”nsValue”>
-(void)addNamespace: (DDXMLNode*)aNamespace;//为当前Element一个添加命名空间
-(void)removeNamespaceForPrefix: (NSString*)name;//移除指定的命名空间
-(void)setNamespaces: (NSArray*)namespaces;//设置命名空间列表
-(NSArray*)namespaces;//命名空间列表
-(DDXMLNode*)namespaceForPrefix: (NSString*)prefix;//根据prefix(即nsName)获得namespace
-(DDXMLNode*)resolveNamespaceForName: (NSString*)name;//获得指定标签名所属的namespace,例如: number…>,将此结点的name传入即可获得所属的namespace对象
-(NSString*)resolvePrefixForNamespaceURI: (NSString*)namespaceURI;//获得指定URI值的namespace的nsName #pragmamark——————————Children——————————
-(void)insertChild: (DDXMLNode*)childatIndex: (NSUInteger)index;//在children(子结点列表)中插入子结点
-(void)removeChildAtIndex: (NSUInteger)index;//移除指定index的子结点
-(void)setChildren: (NSArray*)children;//设置子结点列表
-(void)addChild: (DDXMLNode*)child;//子结点列表的get方法 #pragmamark——————————Extra——————————
+(DDXMLElement*)elementWithName: (NSString*)namexmlns: (NSString*)ns;//创建一个结点,形如: (NSString*)name;//返回所有子元素中第一个名为name的element
-(DDXMLElement*)elementForName: (NSString*)namexmlns: (NSString*)xmlns;//返回所有子元素中第一个名为name且xmlns为xmlns值的element //xmlns值的set和get方法
-(void)setXmlns: (NSString*)ns;
-(NSString*)xmlns; -(void)addAttributeWithName: (NSString*)namestringValue: (NSString*)string;//为当前结点添加属性&属性值
-(NSDictionary*)attributesAsDictionary;//返回属性字典列表 ========================================================== 其他私有的方法(基本用不到,主要是内部调用,有兴趣的自己试下) @interfaceDDXMLNode(PrivateAPI) +(id)nodeWithPrimitive: (xmlKindPtr)nodePtr;
-(id)initWithCheckedPrimitive: (xmlKindPtr)nodePtr;
-(id)initWithUncheckedPrimitive: (xmlKindPtr)nodePtr; +(id)nodeWithPrimitive: (xmlKindPtr)nodePtrnsParent: (xmlNodePtr)parentPtr;
-(id)initWithCheckedPrimitive: (xmlKindPtr)nodePtrnsParent: (xmlNodePtr)parentPtr;
-(id)initWithUncheckedPrimitive: (xmlKindPtr)nodePtrnsParent: (xmlNodePtr)parentPtr; +(BOOL)isXmlAttrPtr: (xmlKindPtr)kindPtr;
-(BOOL)isXmlAttrPtr; +(BOOL)isXmlNodePtr: (xmlKindPtr)kindPtr;
-(BOOL)isXmlNodePtr; +(BOOL)isXmlDocPtr: (xmlKindPtr)kindPtr;
-(BOOL)isXmlDocPtr; +(BOOL)isXmlDtdPtr: (xmlKindPtr)kindPtr;
-(BOOL)isXmlDtdPtr; +(BOOL)isXmlNsPtr: (xmlKindPtr)kindPtr;
-(BOOL)isXmlNsPtr; -(BOOL)hasParent;//是否有父结点 +(void)recursiveStripDocPointersFromNode: (xmlNodePtr)node; +(void)detachAttribute: (xmlAttrPtr)attrfromNode: (xmlNodePtr)node;
+(void)removeAttribute: (xmlAttrPtr)attrfromNode: (xmlNodePtr)node;
+(void)removeAllAttributesFromNode: (xmlNodePtr)node; +(void)detachNamespace: (xmlNsPtr)nsfromNode: (xmlNodePtr)node;
+(void)removeNamespace: (xmlNsPtr)nsfromNode: (xmlNodePtr)node;
+(void)removeAllNamespacesFromNode: (xmlNodePtr)node; +(void)detachChild: (xmlNodePtr)childfromNode: (xmlNodePtr)node;
+(void)removeChild: (xmlNodePtr)childfromNode: (xmlNodePtr)node;
+(void)removeAllChildrenFromNode: (xmlNodePtr)node; +(void)removeAllChildrenFromDoc: (xmlDocPtr)doc; -(void)nodeRetain;
-(void)nodeRelease; +(NSError*)lastError; @end @interfaceDDXMLElement(PrivateAPI) +(id)nodeWithPrimitive: (xmlKindPtr)nodePtr;
-(id)initWithCheckedPrimitive: (xmlKindPtr)nodePtr;
-(id)initWithUncheckedPrimitive: (xmlKindPtr)nodePtr; -(NSArray*)elementsWithName: (NSString*)nameuri: (NSString*)URI; +(DDXMLNode*)resolveNamespaceForPrefix: (NSString*)prefixatNode: (xmlNodePtr)nodePtr;
+(NSString*)resolvePrefixForURI: (NSString*)uriatNode: (xmlNodePtr)nodePtr; @end @interfaceDDXMLDocument(PrivateAPI) +(id)nodeWithPrimitive: (xmlKindPtr)nodePtr;
-(id)initWithCheckedPrimitive: (xmlKindPtr)nodePtr;
-(id)initWithUncheckedPrimitive: (xmlKindPtr)nodePtr; @end 如果不了解KissXml的配置和使用方法,请参见: iPhone,xml 2条评论 KissXml配置 2010年12月31日in开发bypimacun 关于KissXml在iPhone开发中操作xml的优秀表现就不多说了,主要说怎么用。 1.上GoogoleCode下载最新的KissXml.zip,地址: 2.解压KissXml,将除了DDXMLTesting外的类声明和实现文件都拖入工程(最好建个group,方便管理)。 3.配置library: 在左侧树形目录里,选中项目名,点击工具栏的Info按钮,在build选项卡里添加2个属性, OTHER_LDFLAGS=-lxml2 HEADER_SEARCH_PATHS=/usr/includ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- KissXml API和配置 API 配置