加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML解析,NSXMLParser

发布时间:2020-12-16 05:21:23 所属栏目:百科 来源:网络整理
导读:原文地址: XML解析,NSXMLParser 作者: 殷昭 要转载请表明链接地址: http://blog.sina.com.cn/bbsme 1,首先获取文件目录 NSArray *paths = NSSearchPathForDirectori esInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSString *documentsDirect
原文地址:XML解析,NSXMLParser 作者:殷昭
要转载请表明链接地址: http://blog.sina.com.cn/bbsme
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/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读