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

    这里使用NSXMLParser来解析,这个是apple自带的xml解析库,有个參考文章:http://www.raywenderlich.com/553/xml-tutorial-for-ios-how-to-choose-the-best-xml-parser-for-your-iphone-project

    在Xcode中增加一个xml文件:

    <?

    xml version="1.0" encoding="ISO-8859-1"?> <root> <Shop shoplocation="beijing"> <id>001</id> <name>John</name> <url>Reminder</url> <info>Don't forget the meeting!</info> </Shop> <Shop shoplocation="dongcheng"> <id>002</id> <name>Jack</name> <url>cc</url> <info>how are you!</info> </Shop> <Shop shoplocation="haidian"> <id>003</id> <name>Tom</name> <url>bb</url> <info>I am fine!</info> </Shop> </root>




    先读出来

       NSString* path =  [[NSBundle mainBundle] pathForResource:@"shop" ofType:@"xml"];
        NSData *data = [[NSData alloc] initWithContentsOfFile:path options:(NSDataReadingMappedIfSafe) error:nil];
        NSXMLParser *parser=[[NSXMLParser alloc] initWithData:tmpdata];
    <span style="white-space:pre">	</span>[parser setDelegate:self];
    	[parser parse];
    	[parser release];
        [self parseShopListFromResponse:data];


    然后进行解析:

    #pragma mark NSXMLParser delegate methods
    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
      namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName
    	attributes: (NSDictionary *)attributeDict {
        self.currentTag = elementName;
    	if ([elementName isEqualToString:@"root"]) {
    		self.tmpList = [[NSMutableArray alloc] init];
    	}else if ([elementName isEqualToString:@"Shop"]) {
    		self.tmpShop = [[ShopData alloc] init];
            NSArray* array = [attributeDict allKeys];
            NSString* key = [array lastObject];
            NSString*s  = [attributeDict objectForKey:key];
            self.tmpShop.info = s;
    	}
    }
    
    -(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
        if (self.currentString == nil) {
            self.currentString = [[NSMutableString alloc] initWithString:@""];
        }
        
        if ([self.currentTag isEqualToString:@"name"] ||
            [self.currentTag isEqualToString:@"id"] ||
            [self.currentTag isEqualToString:@"url"] ||
            [self.currentTag isEqualToString:@"info"]) {
            [self.currentString appendString:string];
    	}
    }
    
    -(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
     
    	if ([elementName isEqualToString:@"Shop"]) {
    		[self.tmpList addObject:self.tmpShop];
            [self.tmpShop release];
    	} if ([elementName isEqualToString:@"name"]) {
            self.tmpShop.name = [self.currentString copy];
            [self.currentString setString:@""];
    	}else if ([elementName isEqualToString:@"id"]) {
    		self.tmpShop._id = [self.currentString copy];
            [self.currentString setString:@""];
    	}else if ([elementName isEqualToString:@"url"]) {
    		self.tmpShop.url = [self.currentString copy];
            [self.currentString setString:@""];
    	}else if ([elementName isEqualToString:@"info"]) {
    //		self.tmpShop.info = [self.currentString copy];
    //        [self.currentString setString:@""];
    	}
    }
    
    - (void)parserDidStartDocument:(NSXMLParser *)parser {
    	NSLog(@"開始解析xml文件");
    }
    
    - (void)parserDidEndDocument:(NSXMLParser *)parser {
    	
    	[self.tableView reloadData];
    	NSLog(@"解析xml文件完毕");
    }
    



    Shopdata的结构是:

    @property (nonatomic,retain) NSString *name;
    @property (nonatomic,retain) NSString *url;
    @property (nonatomic,retain) NSString *_id;
    @property (nonatomic,retain) NSString *info;
    @property (nonatomic, retain) UIImage *appIcon;



    代码能够在http://download.csdn.net/detail/baidu_nod/7585037下载,无需积分

  • 相关阅读:
    cell list of blocks physical read等待事件
    cell manager discovering disks等待事件
    OOP
    静态网页与动态网页的区别
    一个HTTP请求的详细过程
    PING 确认网络连接情况
    软件开发模型
    搭建网站的全套流程
    Design Diagram
    网络基础
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10761449.html
Copyright © 2011-2022 走看看