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

//移动开发过程中,很多时候,我们的数据来自网络别人提供的数据接口,所以我们做app的时候,需要用别人提供的接口把数据解析下载到本地,然后建立数据模型,再把数据显示到UI 界面上,网络上一搬提供两种数据的接口
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];
}

}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值