KissXml API和配置.docx

上传人:b****4 文档编号:12228430 上传时间:2023-04-17 格式:DOCX 页数:14 大小:22.44KB
下载 相关 举报
KissXml API和配置.docx_第1页
第1页 / 共14页
KissXml API和配置.docx_第2页
第2页 / 共14页
KissXml API和配置.docx_第3页
第3页 / 共14页
KissXml API和配置.docx_第4页
第4页 / 共14页
KissXml API和配置.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

KissXml API和配置.docx

《KissXml API和配置.docx》由会员分享,可在线阅读,更多相关《KissXml API和配置.docx(14页珍藏版)》请在冰豆网上搜索。

KissXml API和配置.docx

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;//创建一个结点,形如:


-(DDXMLElement*)elementForName:

(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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 交通运输

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1