在学过网络请求之后,紧接着就是XML与JSON解析,XML和JSON解析就是截取字符串,这点是最重要的部分.当我们从网络请求到数据之后,基本都是XML形式,其内部无外乎就是数组套字典再套数组,或者字典套数组或者再套字典.那么怎么解析这些数据呢?我们从最开始的网络请求开始,一步一步用代码完成.
//当输入网址后,如果网址中需要有参数的,先将网址进行拼接,拼接成一个完整的网址后,在进行网络请求
- (void)startConnectURL:(NSString *)str parmaters:(NSDictionary *)parmaters {
NSString *mystr = @"";
for (NSString *keyin parmaters) {
if ([mystr length] ==0) {
mystr = [NSStringstringWithFormat:@"?%@=%@", key, [parmatersobjectForKey:key]];
}
else {
mystr = [NSStringstringWithFormat:@"%@%@=%@&", mystr, key,[parmatersobjectForKey:key]];
}
}
str = [NSStringstringWithFormat:@"%@%@", str, mystr];
self.urlName = str;
NSURL *url = [NSURLURLWithString:str];
NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];
[requestsetHTTPMethod:@"GET"];
[NSURLConnectionconnectionWithRequest:request delegate:self];
}
//使用NSURLConnectionDataDelegate协议方法, 当下载完成后, 将文件以NSDATA形式存储本地.
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[self.dataappendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//存储数据
NSString *name = [ContactModelurlWithStr:self.urlNameparmaters:nil];
[ToolModelsaveFile:_dataFilename:name];
[self.delegatecontect:_data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"%@", error);
}
//在其他页面调用本地的文件,开始解析
- (void)contect:(NSData *)data
{ //JSON解析很容易,只需要一个方法就可以帮助完成数据的解析工作,不过一定要看好结构,到底用什么类型的元素接收解析后的数值.
NSDictionary *dic = [NSJSONSerializationJSONObjectWithData:data options:NSUTF8StringEncodingerror:nil];
NSArray *array = [dic objectForKey:@"events"];
for (NSDictionary *myDicin array) {
ActiveModel *model = [[ActiveModelalloc] init];
[model setValuesForKeysWithDictionary:myDic];
[_activeArrayaddObject:model];
[modelrelease];
}
[_activeTable reloadData];
}