XML解析,NSXMLParser

来源:互联网 发布:淘宝上卖水果 编辑:程序博客网 时间:2024/05/16 08:37
原文地址:XML解析,NSXMLParser作者:殷昭
要转载请表明链接地址:http://blog.sina.com.cn/bbsme
1,首先获取文件目录
    NSArray*paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
        NSString*documentsDirectory = [paths objectAtIndex:0];
        chatFile= [[NSString alloc] initWithString:[documentsDirectorystringByAppendingPathComponent:CHATSFILE_NAME]];

2,加载文件

 

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

    NSXMLParser *chatLogParser =[[NSXMLParser alloc] initWithContentsOfURL:[NSURLfileURLWithPath:xmlFile]];
    [chatLogParser setDelegate:self];
    [currentString setString:@""];//记录当前节点的值
    [currentChatInfo removeAllObjects];//节点对象

    [chatLogParser parse];//开始XML解析
    chatLogParser release];

    [self performSelectorOnMainThread:@selector(finshLoadFile) withObject:nil waitUntilDone:YES];//创建线程
    [pool release];
}

3.代理方法

#pragma mark -

#pragma mark xml work methods

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

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

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

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

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



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

{

           if([elementName isEqualToString:head]) {

                      [chatArrayremoveAllObjects];//移除临时对象

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

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

            }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 *)namespaceURIqualifiedName:(NSString *)qName

{

      if([elementName isEqualToString:head]){

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

              [chatArray addObject:[NSDictionarydictionaryWithDictionary:currentChatInfo]];

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

              [elementName isEqualToString:child_text] ||

              [elementName isEqualToString:child_date]) {

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

      }

    storingCharacters = NO;
}



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

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

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

原创粉丝点击