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];
    }

  • 相关阅读:
    linux指令备份
    jdk安装
    java-成员变量的属性与成员函数的覆盖
    Codeforces Round #384 (Div. 2) E
    Codeforces Round #384 (Div. 2) ABCD
    Codeforces Round #383 (Div. 2) D 分组背包
    ccpcfinal总结
    HDU 3966 & POJ 3237 & HYSBZ 2243 & HRBUST 2064 树链剖分
    HDU 5965 枚举模拟 + dp(?)
    Educational Codeforces Round 6 E dfs序+线段树
  • 原文地址:https://www.cnblogs.com/lizhen24/p/5979560.html
Copyright © 2011-2022 走看看