在实际项目开发中,除了经常会用到网络请求数据以外,还有一个就是请求回来的数据解析,这节先说说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开发总汇》
百度知道群:开发者俱乐部