XML解析,NSXMLParser

前端之家收集整理的这篇文章主要介绍了XML解析,NSXMLParser前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_2@ 原文地址:XML解析,NSXMLParser 作者:殷昭
1,首先获取文件目录
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);@H_502_24@ NSString *documentsDirectory = [paths objectAtIndex:0];@H_502_24@ chatFile = [[NSString alloc] initWithString:[documentsDirectory stringByAppendingPathComponent:CHATSFILE_NAME]];

2,加载文件

- (void) loadThread:(NSString*)xmlFile{@H_502_24@ NSAutoreleasePool* pool = [[NSAutoreleasePoolalloc]init];@H_502_24@ @H_502_24@ NSXMLParser*chatLogParser = [[NSXMLParseralloc]initWithContentsOfURL:[NSURLfileURLWithPath:xmlFile]];@H_502_24@ [chatLogParsersetDelegate:self];@H_502_24@ [currentStringsetString:@""];//记录当前节点的值@H_502_24@ [currentChatInforemoveAllObjects];//节点对象@H_502_24@ @H_502_24@ [chatLogParserparse];//开始XML解析@H_502_24@ chatLogParserrelease];@H_502_24@ @H_502_24@ [selfperformSelectorOnMainThread:@selector(finshLoadFile)withObject:nilwaitUntilDone:YES];//创建线程@H_502_24@ [poolrelease];@H_502_24@ }

3.代理方法

#pragma mark -@H_502_24@ @H_502_24@ #pragma mark xml work methods@H_502_24@ @H_502_24@ #define head @"moods" //定义的事例节点@H_502_24@ @H_502_24@ #define parent @"mood"//定义的事例节点@H_502_24@ @H_502_24@ #define child_speaker @"speaker"//定义的事例节点@H_502_24@ @H_502_24@ #define child_date @"time"//定义的事例节点@H_502_24@ @H_502_24@ #define child_text@"text"//定义的事例节点@H_502_24@ @H_502_24@ @H_502_24@ @H_502_24@ - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict@H_502_24@ @H_502_24@ {@H_502_24@ @H_502_24@ if ([elementName isEqualToString:head]) {@H_502_24@ @H_502_24@ [chatArray removeAllObjects];//移除临时对象@H_502_24@ @H_502_24@ } else if ([elementName isEqualToString:parent]) {@H_502_24@ @H_502_24@ [currentChatInfo removeAllObjects];//移除临时对象的节点@H_502_24@ @H_502_24@ } else if ([elementName isEqualToString:child_speaker] ||@H_502_24@ @H_502_24@ [elementName isEqualToString:child_text] ||@H_502_24@ @H_502_24@ [elementName isEqualToString:child_date]) {@H_502_24@ @H_502_24@ [currentString setString:@""];//设置当前临时节点值为NULL@H_502_24@ @H_502_24@ storingCharacters = YES;@H_502_24@ @H_502_24@ }@H_502_24@ }@H_502_24@ @H_502_24@ @H_502_24@ @H_502_24@ - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName@H_502_24@ @H_502_24@ {@H_502_24@ @H_502_24@ if([elementName isEqualToString:head]){@H_502_24@ @H_502_24@ }else if([elementName isEqualToString:parent]){@H_502_24@ @H_502_24@ [chatArray addObject:[NSDictionary dictionaryWithDictionary:currentChatInfo]];@H_502_24@ @H_502_24@ }else if ([elementName isEqualToString:child_speaker] ||@H_502_24@ @H_502_24@ [elementName isEqualToString:child_text] ||@H_502_24@ @H_502_24@ [elementName isEqualToString:child_date]) {@H_502_24@ @H_502_24@ [currentChatInfo setObject:[NSString stringWithString:currentString] forKey:elementName];//创建对象@H_502_24@ @H_502_24@ }@H_502_24@ @H_502_24@ storingCharacters = NO;@H_502_24@ }@H_502_24@ @H_502_24@ @H_502_24@ @H_502_24@ - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string@H_502_24@ @H_502_24@ {@H_502_24@ if (storingCharacters) [currentString appendString:string];//拼接当前节点的值@H_502_24@ }

我的百度博客地址:http://hi.baidu.com/makaymose/

猜你在找的XML相关文章