1、XML的数据:
<?xml version="1.0" encoding="utf-8" ?> (表示XML文件版本)
<CityName>北京</CityName> (一个节点,CityName是结点名,北京结点值)
<Item key="1" value="A"></Item> (key="1"是结点属性,key属性名,“1”属性值)
注意:XML是层次嵌套的结构
2、解析XML:
//开始加载数据 -(void)startDownloadData { NSString *urlSring=[NSString stringWithFormat:MAIN_SHOP_URL,_city,_category,_offset,_pageSize]; _request=[[LCHttpRequest alloc]init]; [_request requestUrl:urlSring target:self action:@selector(dealDownloadFinish:)]; } //加载完成后,解析和处理数据 -(void)dealDownloadFinish:(LCHttpRequest *)request { //解析XML -利用第三方开源库 GDataXMLDocument GDataXMLDocument *doc=[[GDataXMLDocument alloc]initWithData:request.data options:0 error:nil]; NSArray *list=[doc nodesForXPath:@"//promotion" error:nil]; //利用CDataXMLElement获取 for (GDataXMLElement * promotion in list) { PromotionModel *model=[[PromotionModel alloc]initWithGDataXMLElement:promotion]; [_allData addObject:model]; } } #import "PromotionModel.h" @implementation PromotionModel //封住数据模型-利用获得的GDataXMLElement -(id)initWithGDataXMLElement:(GDataXMLElement *)element { if (self=[super init]) { self.name=[[element elementsForName:@"name"][0] stringValue]; self.id=[[element elementsForName:@"id"][0] stringValue]; self.surl=[[element elementsForName:@"surl"][0] stringValue]; self.wsdimg=[[element elementsForName:@"wsdimg"][0] stringValue]; self.durl=[[element elementsForName:@"durl"][0] stringValue]; self.multipagetitle=[[element elementsForName:@"multipagetitle"][0] stringValue]; self.price=[[element elementsForName:@"price"][0] stringValue]; self.priceoff=[[element elementsForName:@"priceoff"][0] stringValue]; self.currentdealcount=[[element elementsForName:@"currentdealcount"][0] stringValue]; self.starttime=[[element elementsForName:@"starttime"][0] stringValue]; self.endtime=[[element elementsForName:@"endtime"][0] stringValue]; self.sevenrefundallowed=[[element elementsForName:@"sevenrefundallowed"][0] stringValue]; self.expirerefundallowed=[[element elementsForName:@"expirerefundallowed"][0] stringValue]; self.district=[[element elementsForName:@"district"][0] stringValue]; self.type2=[[element elementsForName:@"type2"][0] stringValue]; self.hassub=[[element elementsForName:@"hassub"][0] stringValue]; self.flag=[[element elementsForName:@"flag"][0] stringValue]; } return self; }
3、上拉刷新、下拉加载
利用第三方开源库是方便的:例如AH3DPullRefresh:
#pragma mark - 上拉刷新,下拉加载更多 -(void)addPullRefreahAndPullLoadMore { [_tableView setPullToRefreshHandler:^{ //从第一行数据开始下载 _offset=1; [self startDownloadData]; }]; [_tableView setPullToLoadMoreHandler:^{ _offset+=_pageSize; [self startDownloadData]; }]; } //上拉或者下拉会调用下面方法 //开始加载数据 -(void)startDownloadData { NSString *urlSring=[NSString stringWithFormat:MAIN_SHOP_URL,_city,_category,_offset,_pageSize]; _request=[[LCHttpRequest alloc]init]; [_request requestUrl:urlSring target:self action:@selector(dealDownloadFinish:)]; } //加载完成后,解析和处理数据 -(void)dealDownloadFinish:(LCHttpRequest *)request {//解析XML GDataXMLDocument *doc=[[GDataXMLDocument alloc]initWithData:request.data options:0 error:nil]; NSArray *list=[doc nodesForXPath:@"//promotion" error:nil]; if (_offset==1) { NSLog(@"正在刷新数据"); [_allData removeAllObjects]; } for (GDataXMLElement * promotion in list) { PromotionModel *model=[[PromotionModel alloc]initWithGDataXMLElement:promotion]; [_allData addObject:model]; } //结束刷新 [_tableView refreshFinished]; //结束加载更多 [_tableView loadMoreFinished]; [_tableView reloadData]; }
4、多使用第三方开源库实现:
时间: 2024-10-05 15:22:46