网络数据请求和XML 数据解析

//移动开发过程中,很多时候,我们的数据来自网络别人提供的数据接口,所以我们做app的时候,需要用别人提供的接口把数据解析下载到本地,然后建立数据模型,再把数据显示到UI 界面上,网络上一搬提供两种数据的接口
Json 数据,xml 数据.
1.XML 下载并解析
//.m  文件中定义两个对象

@interface ViewController ()
{
    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  ,如图

网络数据请求和XML 数据解析_第1张图片

(2)添加二进制库
在build  setting 下面找到  link binary with libraries   添加 libxml2.dylib


网络数据请求和XML 数据解析_第2张图片


(3)源文件添加编译选项

网络数据请求和XML 数据解析_第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];
}

}


你可能感兴趣的:(iOS开发)