XML解析,NSXMLParser

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

2,加载文件

- (void) loadThread:(NSString*)xmlFile{
NSAutoreleasePool* pool = [[NSAutoreleasePoolalloc]init];

NSXMLParser*chatLogParser = [[NSXMLParseralloc]initWithContentsOfURL:[NSURLfileURLWithPath:xmlFile]];
[chatLogParsersetDelegate:self];
[currentStringsetString:@""];//记录当前节点的值
[currentChatInforemoveAllObjects];//节点对象

[chatLogParserparse];//开始XML解析
chatLogParserrelease];

[selfperformSelectorOnMainThread:@selector(finshLoadFile)withObject:nilwaitUntilDone:YES];//创建线程
[poolrelease];
}

3.代理方法

#pragma mark -

#pragma mark xml work methods

#define head @"moods" //定义的事例节点

#define parent @"mood"//定义的事例节点

#define child_speaker @"speaker"//定义的事例节点

#define child_date @"time"//定义的事例节点

#define child_text@"text"//定义的事例节点



- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

{

if ([elementName isEqualToString:head]) {

[chatArray removeAllObjects];//移除临时对象

} else if ([elementName isEqualToString:parent]) {

[currentChatInfo removeAllObjects];//移除临时对象的节点

} else if ([elementName isEqualToString:child_speaker] ||

[elementName isEqualToString:child_text] ||

[elementName isEqualToString:child_date]) {

[currentString setString:@""];//设置当前临时节点值为NULL

storingCharacters = YES;

}
}



- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

{

if([elementName isEqualToString:head]){

}else if([elementName isEqualToString:parent]){

[chatArray addObject:[NSDictionary dictionaryWithDictionary:currentChatInfo]];

}else if ([elementName isEqualToString:child_speaker] ||

[elementName isEqualToString:child_text] ||

[elementName isEqualToString:child_date]) {

[currentChatInfo setObject:[NSString stringWithString:currentString] forKey:elementName];//创建对象

}

storingCharacters = NO;
}



- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{
if (storingCharacters) [currentString appendString:string];//拼接当前节点的值
}

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

原文链接:https://www.f2er.com/xml/299984.html

猜你在找的XML相关文章