iphone-common-codes-ccteam源代码 CCXml.m

// // CCXml.m // CCFC // // Created by xichen on 11-12-19. // Copyright 2011 ccteam. All rights reserved. // #import "CCXml.h" @implementation CCXmlProperty - (id)initWithAttr:(xmlAttrPtr)attr { self = [super init]; if(self) { _attr = attr; } return self; } - (void)dealloc { [super dealloc]; } @end @implementation CCXmlNode + (id)nodeWithNode:(CCXmlNode *)node { return [[[CCXmlNode alloc] initWithNode:node->_node] autorelease]; } - (id)initWithNode:(xmlNodePtr)node { self = [super init]; if(self) { _node = node; } return self; } - (void)dealloc { [super dealloc]; } - (int)type { return _node->type; } - (CCXmlNode *)next { if(_node->next == NULL) return nil; return [[[CCXmlNode alloc] initWithNode:_node->next] autorelease]; } - (CCXmlNode *)prev { if(_node->prev == NULL) return nil; return [[[CCXmlNode alloc] initWithNode:_node->prev] autorelease]; } - (CCXmlNode *)last { if(_node->last == NULL) return nil; return [[[CCXmlNode alloc] initWithNode:_node->last] autorelease]; } - (CCXmlNode *)child { if(_node->children == NULL) return nil; return [[[CCXmlNode alloc] initWithNode:_node->children] autorelease]; } - (CCXmlNode *)parent { if(_node->parent == NULL) return nil; return [[[CCXmlNode alloc] initWithNode:_node->parent] autorelease]; } - (unsigned char *)name { return (unsigned char *)_node->name; } - (unsigned char *)text { return (unsigned char *)xmlNodeGetContent(_node); } - (unsigned char *)getProp:(const char *)propName { return (unsigned char *)xmlGetProp(self->_node, (const xmlChar *)propName); } - (void)setProp:(const char *)name withValue:(const char *)value { xmlSetProp(self->_node, BAD_CAST(name), BAD_CAST(value)); } @end @implementation CCXml - (id)initWithFileFullPath:(NSString *)fileFullPath { self = [super init]; if(self) { _doc = xmlParseFile([fileFullPath UTF8String]); if(_doc == NULL) return nil; _rootNode = [[CCXmlNode alloc] initWithNode:xmlDocGetRootElement(_doc)]; _firstLevelNodesArr = [NSMutableArray new]; if(_rootNode != nil) { xmlNodePtr curNode = _rootNode->_node->children; while(curNode != NULL) { if(curNode->type == XML_ELEMENT_NODE) { [_firstLevelNodesArr addObject:[[[CCXmlNode alloc] initWithNode:curNode] autorelease]]; } curNode = curNode->next; } } } return self; } - (void)dealloc { if(_doc != NULL) xmlFreeDoc(_doc); [_rootNode release]; [super dealloc]; } - (CCXmlNode *)getRootNode { return _rootNode; } - (NSArray *)firstLevelNodeArr { return _firstLevelNodesArr; } - (NSArray *)getSubElementNodeArr:(CCXmlNode *)mainNode { NSMutableArray *arr = [NSMutableArray array]; if(mainNode != nil) { xmlNodePtr curNode = mainNode->_node->children; while(curNode != NULL) { if(curNode->type == XML_ELEMENT_NODE) { [arr addObject:[[[CCXmlNode alloc] initWithNode:curNode] autorelease]]; } curNode = curNode->next; } } return arr; } @end


可能有更新:

googlecode链接地址:http://code.google.com/p/iphone-common-codes-ccteam/source/browse/trunk/CCFC/files/CCXml.m

github地址: https://github.com/cxsjabc/iphone-common-codes-ccteam/tree/master/CCFC/files/CCXml.m


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值