iOS XML 解析

一、sax 解析方法
解析xml方式1::NSXMLParser(系统类),
   1:创建文件路径
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Untitled" ofType:@"xml"];
    NSURL *url = [[NSURL alloc]initFileURLWithPath:filePath];
//  创建解析类
    NSXMLParser *parser = [[NSXMLParser alloc]initWithContentsOfURL:url];
//    设置代理
    parser.delegate = self;
    [parser parse];
<pre name="code" class="objc">//遇到开始标签
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName attributes:(NSDictionary<NSString *, NSString *> *)attributeDict{
    
    if ([elementName isEqualToString:@"ROW"]) {
        self.city = [[CityModel alloc]init];
    }
    NSLog(@"遇到开始标签:%@",elementName);
}
//结束标签
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(nullable NSString *)namespaceURI qualifiedName:(nullable NSString *)qName{
    
    if ([elementName isEqualToString:@"AREAID"]) {
        self.city.areaID =self.string;
    }else if([elementName isEqualToString:@"NAMEEN"]){
        self.city.nameen = self.string;
    }else if ([elementName isEqualToString:@"NAMECN"]){
        self.city.namecn = self.string;
    }else if ([elementName isEqualToString:@"DISTRICTEN"]){
        self.city.districten = self.string;
    
    }else if ([elementName isEqualToString:@"DISTRICTCN"]){
        
        self.city.districtcn = self.string;
    }else if ([elementName isEqualToString:@"PROVEN"]){
        self.city.proven = self.string;
    }else if ([elementName isEqualToString:@"PROVCN"]){
        self.city.provcn = self.string;
    }else if ([elementName isEqualToString:@"NATIONEN"]){
         self.city.nationen = self.string;
    }else if ([elementName isEqualToString:@"NATIONCN"]){
        self.city.nationcn = self.string;
    }else if ([elementName isEqualToString:@"ROW"]){
//        添加进数组
        [self.array addObject:self.city];
    }
    
      NSLog(@"遇到开始标签:%@",elementName);
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    NSLog(@"字符串:%@",string);
    self.string  = string;
}


 
 二、dom解析 
 

1、文件路径  
 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Untitled" ofType:@"xml"];
    
    NSError *error;
2.写入
    NSString *content = [[NSString alloc]initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
    if (error == nil) {
//        NSLog(@"%@",content);
    }else{
//        NSLog(@"%@",error);
        return;
    }
3.初始化
    GDataXMLDocument *docment = [[GDataXMLDocument alloc]initWithXMLString:content options:0 error:nil];
//    获取到根节点
    GDataXMLElement *rootElement = [docment rootElement];
//    查找子节点
  NSArray *arrayElements = [rootElement elementsForName:@"ROW"];
    
    self.array = [NSMutableArray array];
//    NSLog(@"%@",arrayElements);
    for (GDataXMLElement *element in arrayElements) {
//        创建模型
        self.city = [[CityModel alloc]init];
//        根据节点查找对应值
        self.city.areaID =[[[element elementsForName:@"AREAID"] lastObject] stringValue];
        self.city.namecn =[[[element elementsForName:@"NAMEEN"] lastObject] stringValue];
        self.city.nameen =[[[element elementsForName:@"NAMECN"] lastObject] stringValue];
        self.city.districten =[[[element elementsForName:@"DISTRICTEN"] lastObject] stringValue];
        self.city.districtcn =[[[element elementsForName:@"DISTRICTCN"] lastObject] stringValue];
        self.city.proven =[[[element elementsForName:@"PROVEN"] lastObject] stringValue];
        self.city.provcn =[[[element elementsForName:@"PROVCN"] lastObject] stringValue];
        self.city.nationen =[[[element elementsForName:@"NATIONEN"] lastObject] stringValue];
        self.city.nationcn =[[[element elementsForName:@"NATIONCN"] lastObject] stringValue];
        self.city.areaID =[[[element elementsForName:@"AREAID"] lastObject] stringValue];
        self.city.areaID =[[[element elementsForName:@"AREAID"] lastObject] stringValue];
        //        添加进数组
        [self.array addObject:self.city];
    }
     NSLog(@"%@",self.array);
}

下面是 GDataXMLDocument 的配置方法
1.引入库文件


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值