zoukankan      html  css  js  c++  java
  • iOS_OC 解析XML文件

    NSXMLParserDelegate

    /* 开始解析xml文件,在开始解析xml节点前,通过该方法可以做一些初始化工作 */
    - (void)parserDidStartDocument:(NSXMLParser *)parser
    {

    NSLog(@"开始解析xml文件");

    [spinner_view startAnimating];
    newsTitles = nil;
    newsDescription = nil;
    newsPublicDates = nil;
    tempString = nil;
    showxml_textView.text = @"";
    NSLog(@"开始解析xml文件");

    }

    /* 当解析器对象遇到xml的开始标记时,调用这个方法开始解析该节点 */
    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
    {
    NSLog(@"发现节点");

    if([elementName isEqualToString:@"title"])
    {
    if(newsTitles == nil)
    newsTitles = [[NSMutableArray alloc] init];
    }
    else if([elementName isEqualToString:@"description"])
    {
    if(newsDescription == nil)
    newsDescription = [[NSMutableArray alloc] init];
    }
    else if([elementName isEqualToString:@"pubDate"])
    {
    if(newsPublicDates == nil)
    newsPublicDates = [[NSMutableArray alloc] init];
    }
    else {

    }
    }

    /* 当解析器找到开始标记和结束标记之间的字符时,调用这个方法解析当前节点的所有字符 */
    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
    {
    NSLog(@"正在解析节点内容");
    if(self.tempString == nil)
    self.tempString = [[NSMutableString alloc] init];
    [self.tempString appendString:string];
    }

    /* 当解析器对象遇到xml的结束标记时,调用这个方法完成解析该节点 */
    - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
    {
    NSLog(@"解析节点结束");
    if([elementName isEqualToString:@"title"])
    {
    [newsTitles addObject:self.tempString];
    }
    else if([elementName isEqualToString:@"description"])
    {
    [newsDescription addObject:self.tempString];
    }
    else if([elementName isEqualToString:@"pubDate"])
    {
    [newsPublicDates addObject:self.tempString];
    }
    else {

    }
    self.tempString = nil;
    }

    /* 解析xml出错的处理方法 */
    - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
    NSLog(@"解析xml出错:%@", parseError);
    }

    /* 解析xml文件结束 */
    - (void)parserDidEndDocument:(NSXMLParser *)parser
    {
    if (!tempString) {
    tempString = [[NSMutableString alloc] init];
    }
    for (int i = 2; i < 10; i++) {
    [tempString appendString:newsTitles[i + 1]];
    [tempString appendString:newsDescription[i]];
    [tempString appendString:newsPublicDates[i]];
    [tempString appendString:@" ------------------------------------------------"];
    }

    showxml_textView.text = tempString;
    NSLog(@"解析xml文件结束");
    [spinner_view stopAnimating];
    }

  • 相关阅读:
    极客互动极客技术专题【003期】:java mvc 增删改查 自动生成工具来袭
    协议命令网络工程试验一
    主题网站分享两套免费的超棒响应式HTML5网站模板
    算法结点图的多源点最短路问题和传递闭包之FloydWarshall算法 By ACReaper
    属性页面Flexbox布局的简单演示之二
    数据库性能Quest Performance Analysis Overview
    网站查看帮助查看本地表单元素样子的网站 Native Form Elements
    文件格式配置文件weka频繁模式挖掘使用方法
    风格希望分享8个超棒的免费界面UI设计
    方法事务applicationContext.xml
  • 原文地址:https://www.cnblogs.com/lizhen24/p/5979560.html
Copyright © 2011-2022 走看看