ios之网络数据解析:XML解析(一)

通常,开发出来的应用都具有网络功能,如此一来,避免不了要接收网络数据,这里聊聊XML格式数据的解析。xml文件截图:

XML解析

        要解析数据,首先要找到想要解析文件的路径,也就是xml的路径,这里把xml放在本地Bundle包中,代码如下:

    NSString *path = [[NSBundle mainBundle] pathForResource:@"Student" ofType:@"xml"];   //获取bundle包的xml文件地址
    NSData *aData = [NSData dataWithContentsOfFile:path];
    NSString *str = [[NSString alloc]initWithData:aData encoding:NSUTF8StringEncoding];   //把NSData地址的文件转换为NSString
    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:aData];

获得了文件路径之后,就要开始解析数据了,系统为我们准备了个协议,NSXMLParserDelegate来解析数据,这里,我们用三个方法来解析数据。

//该方法遍历开始标签,有多少个开始标签,该方法执行多少次
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;

//该方法遍历结束标签,有多少个结束标签,该方法执行多少次
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;

//数据解析时走该方法
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;

接下来,用上面的三个方法解析数据,代码如下:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
    if ([elementName isEqualToString:kStudent]) {
        CustomModel *model = [[CustomModel alloc] init];
        [_allArray addObject:model];
        NSLog(@"%@",_allArray);
        [model release];
    }
}   //开始解析,xml有多少行,方法走多少次

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
    
    CustomModel *model = [_allArray lastObject];
    
    if ([elementName isEqualToString:kNumber]) {
        model.number = _current;
    }
    if ([elementName isEqualToString:kName]) {
        model.name = _current;
    }
    if ([elementName isEqualToString:kSex]) {
        model.sex = _current;
    }
    if ([elementName isEqualToString:kPhone]) {
        model.phone = _current;
    }
    if ([elementName isEqualToString:kStudent]) {
        [self.delegate sendModelToRoot:_allArray];
    }  //最后一个if完成传值

    
}   // 结束解析

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    _current = [string copy]; 
}   //解析xml中的内容

        xml解析到此完毕。



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值