Json 数据,xml 数据.
1.XML 下载并解析
//.m 文件中定义两个对象
@interface ViewController ()<NSURLConnectionDataDelegate>
{
NSURLConnection *_urlConnection; //用于下载的对象
NSMutableData *_downloadData; //存储下载的数据
NSMutableArray *_dataArray;
}
//然后需要在viewDIdLoad 方法中去初始化两个对象:
- (void)viewDidLoad
{
NSString *urlString=@"http://http://mp.manzuo.com/china/beijing/home_2.xml";
//创建并初始化_urlConnection 对象
//参数说明:
//参数1.initWithRequest:网络请求url
// 参数2. delegate 网络请求成功后处理事件,需要遵守 NSURLConnectionDataDelegate协议,
//参数3.startImmediately 是否立即下载,一般都是YES
_urlConnection=[[NSURLConnection alloc]initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]] delegate:self startImmediately:YES];
//创建_downloadData 并初始化对象
_downloadData=[[NSMutableData alloc]init];
}
//遵守NSURLConnectionDataDelegate协议的方法
//当接收到服务器响应时执行
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"开始下载数据");
}
//作用当接收到数据时执行,下载数据较多的时候执行,需要将每次下载的数据合并到一起
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
//每次下载到数据都添加到数据中
NSLog(@"下载数据中");
[_downloadData appendData:data];
}
//下载完成
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
//数据下载完成了,所有的数据都在_downloadData里面
我们要解析的是xml文件,但是苹果内置并没有给我们一个非常完美的内置对象,所以谷歌在2008年专门为苹果写了一个叫专门用来解析的类库 GData+XML 这个类库可以百度搜索到.
,下载完成后, 我们把这个类库拖到项目中去
注意:包含进去这个类库后会出现很多的问题,这里需要配置一下才可以使用
(1)添加头文件搜索路径
在build setting下面输入—>search 搜索到search文件目录下的
Header Search Paths
添加/usr/include/libxml2 ,如图:
(2)添加二进制库
在build setting 下面找到 link binary with libraries 添加 libxml2.dylib
(3)源文件添加编译选项
//(4)添加头文件
// #import "GDataXMLNode.h"
// 配置完成后,就可以使用了
GDataXMLDocument *doc=[[GDataXMLDocument alloc]initWithData:_downloaddata options:0 error:nil];
//数据活动信息存储再list节点中,每个list中有多个promotion节点,每个节点都存储了多个活动信息,显示再cell上
// nodesForXPath 方法是获取文件路径,返回的是一个数组
NSArray *array=[doc nodesForXPath:@"//promotion" error:nil];
for (GDataXMLElement *promotion in array) {
//创建数据模型
ManzuoModel *model=[[ManzuoModel alloc]init];
model.name=[[[promotion elementsForName:@"name"] firstObject] stringValue];
[_dataArray addObject:model];
}
}