IOS解析XML文件

在实际项目开发中,除了经常会用到网络请求数据以外,还有一个就是请求回来的数据解析,这节先说说ios对xml的解析方式,然后咱们在一起讨论下关于ios解析json的方式。


好了,进入正题,ios解析xml是通过apple所提供的方法解析的,首先我们要继承解析xml的委托NSXMLParserDelegate,这个委托里面包括几个方法,这里就介绍最为常用的几个方法,

一般做法,我们会在h文件中定义一个NSString的字符串,用于存储当前所解析的xml文档的节点值,然后通过节点值来读取此节点的内容:

读取xml的操作一般是跟网络请求返回数据操作一起作用的,我就直接贴代码了,部分无关紧要xml解析的部分,我会稍作解析,下面看代码:

-(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [webdata setLength:0];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [webdata appendData:data];
}
-(void) connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSString *string=[[NSString alloc] initWithData:webdata encoding:NSUTF8StringEncoding];
    NSLog(@"WebData:%@",string);
    
    NSXMLParser *paser=[[NSXMLParser alloc] initWithData:webdata];
    [paser setDelegate:self];
    [paser parse];
    
    [webdata release];
}
#pragma --
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    currentElement=elementName;
    //NSLog(@"返回的数据:%@",currentElement);
}

-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if([currentElement isEqualToString:@"GetFullItemResult"])
    {
        NSString *d=[parser valueForKey:@"GetFullItemResult"];
        NSDictionary *DIC=[[NSDictionary alloc] initWithObjectsAndKeys:d, nil];
        //NSLog(@"返回的数据:%@",d);
    }
}
-(void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    NSLog(@"返回的数据:%@",elementName);

}

解析的xml文档是以NSData的形式传入委托方法进行解析的,

解析xml文档的方法执行顺序是:

1.didStartElement方法,这里做当前解析节点的记录

2.foundcharacters方法,在这里判断当前节点是否是要解析的xml节点,如果是,则通过parser的valueforkey的方法获取这个xml节点下面的数据信息

3.didEndElement方法,当前节点解析结束的标记










微信公众平台已开通,加个关注呗。我们一起学习,一起进步
微信号点击添加关注《IOS开发总汇》
百度知道群:开发者俱乐部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值