美团xml文件解析

网址:http://www.meituan.com/api/v1/divisions

#import<UIKit/UIKit.h>

#import "ViewController.h"

@interface AppDelegate : UIResponder

@property (strong, nonatomic) UIWindow *window;

@end

#import "AppDelegate.h"

@interface AppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// Override point for customization after application launch.

self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] init]];

return YES;

}

- (void)applicationWillResignActive:(UIApplication *)application {

// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.

// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.

}

- (void)applicationDidEnterBackground:(UIApplication *)application {

// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.

// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

}

- (void)applicationWillEnterForeground:(UIApplication *)application {

// Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.

}

- (void)applicationDidBecomeActive:(UIApplication *)application {

// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

}

- (void)applicationWillTerminate:(UIApplication *)application {

// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.

}

@end

#import<UIKit/UIKit.h>

#import "SecondTableViewController.h"

@interface ViewController : UIViewController

/**

*  全局的集合 用来添加字典的

*/

@property(strong,nonatomic) NSMutableArray *arrM;

/**

*  字典显示 元素名称和value值

*/

@property(strong,nonatomic) NSMutableDictionary *dicM;

/**

*  str 实际上是 字典中的value值

*/

@property(strong,nonatomic) NSString *str;

@property(strong,nonatomic) UITableView *tableview;

/**

*  城市名字

*/

@property(strong,nonatomic) NSMutableArray *arrMname;

/**

*  城市拼音

*/

@property(strong,nonatomic) NSMutableArray *arrMid;

/**

*  城市维度

*/

@property(strong,nonatomic) NSMutableArray *arrMlatitude;

/**

*  城市经度

*/

@property(strong,nonatomic) NSMutableArray *arrMlongitude;

/**

*  存储集合的字典

*/

@property(strong,nonatomic) NSDictionary *dictotal;

@end

#import "ViewController.h"@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {

  [super viewDidLoad];

  //指定xml文件路径 

  NSURL *url = [NSURL URLWithString:@"http://www.meituan.com/api/v1/divisions"];    //为 parser 指定初始化

  NSXMLParser *pareser = [[NSXMLParser alloc] initWithContentsOfURL:url];  

//指定代理  

pareser.delegate = self; 

  //实现文件xml解析 执行代理方法 

  BOOL bol = [pareser parse];  

//=返回解析的结果 成功 或 失败 

  NSLog(@"%d",bol); 

  //初始化集合   

self.arrMname = [NSMutableArray array]; 

  //初始化tableview  

self.tableview = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain]; 

  self.tableview.backgroundColor = [UIColor colorWithRed:1.000 green:0.942 blue:0.820 alpha:1.000]; 

  //指定代理 

  self.tableview.dataSource = self; 

  self.tableview.delegate = self;  

//添加到父视图  

[self.view addSubview:self.tableview];   

//显示标题    self.title = @"美团城市";   

//设置导航栏上面的右边按钮   

UIBarButtonItem *rightbutton = [[UIBarButtonItem alloc] initWithTitle:@"下一页" style:UIBarButtonItemStylePlain target:self action:@selector(next)];    self.navigationItem.rightBarButtonItem = rightbutton;   

//设置导航栏的前景色   

[self.navigationController.navigationBar setTintColor:[UIColor colorWithRed:0.876 green:0.399 blue:0.225 alpha:1.000]];  

//设置导航栏标题的字体大小和字体颜色   

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:1.000 green:0.350 blue:0.427 alpha:1.000],NSForegroundColorAttributeName,[UIFont fontWithName:@"Arial-Bold" size:30],NSFontAttributeName, nil]];  

}

//跳转到下一页

-(void)next

{   

SecondTableViewController *second = [[SecondTableViewController alloc] initWithStyle:UITableViewStylePlain];   

[self.navigationController pushViewController:second animated:YES];

}

/** *  文档解析开始 初始化全局的集合

* * @param parser

*/

-(void)parserDidStartDocument:(NSXMLParser *)parser

{   

self.arrM = [NSMutableArray array];

}

/** *  文档解析结束

* *  @param parser

*/

-(void)parserDidEndDocument:(NSXMLParser *)parser

{   

//输出集合内容   

//NSLog(@"%@",self.arrM);

}

/** *  文档元素 解析 开始

* *  @param parser        解析的对象

*  @param elementName  元素的名称

*  @param namespaceURI  命名空间

*  @param qName

*  @param attributeDict 属性的字典

*/

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary*)attributeDict

{

//找到文档中User元素,开始初始化字典

if ([elementName isEqualToString:@"division"]) {

//初始化字典

self.dicM = [NSMutableDictionary dictionary];

//向字典中添加属性元素

[self.dicM setDictionary:attributeDict];

}

}

/**

*  文档中解析结束

*

*  @param parser

*  @param elementName  元素名称

*  @param namespaceURI

*  @param qName

*/

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

{

//判断元素的关键字

if ([elementName isEqualToString:@"name"] || [elementName isEqualToString:@"id"] || [elementName isEqualToString:@"timezone"] || [elementName isEqualToString:@"timezone_offset_gmt"] || [elementName isEqualToString:@"latitude"] || [elementName isEqualToString:@"longitude"]) {

[self.dicM setObject:self.str forKey:elementName];

}

//元素标签时才向集合中添加字典

else if ([elementName isEqualToString:@"division"]){

[self.arrM addObject:self.dicM];

}

}

/**

*  解析文件内容

*

*  @param parser 元素对象

*  @param string 显示文本内容

*/

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

self.str = string;

}

//显示分区数

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 1;

}

//每一个分区显示的行数

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return self.arrM.count;

}

//显示每一行的内容

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

static NSString *iden = @"cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:iden];

if (cell == nil) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:iden];

}

//初始化集合

self.arrMid = [NSMutableArray array];

self.arrMlatitude = [NSMutableArray array];

self.arrMlongitude = [NSMutableArray array];

//初始化字典

self.dictotal = [NSDictionary dictionary];

for (_dictotal in self.arrM) {

//将关键字对应的value值添加到集合中

[self.arrMname addObject:_dictotal[@"name"]];

[self.arrMid addObject:_dictotal[@"id"]];

[self.arrMlatitude addObject:_dictotal[@"latitude"]];

[self.arrMlongitude addObject:_dictotal[@"longitude"]];

}

//显示信息

cell.textLabel.text = self.arrMname[indexPath.row];

cell.detailTextLabel.text = self.arrMid[indexPath.row];

return cell;

}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

//初始化类的对象

SecondTableViewController *second = [[SecondTableViewController alloc] initWithStyle:UITableViewStylePlain];

//获取点击的索引值

second.index = indexPath.row;

//将集合赋给下一页要显示的集合

second.arrMname = self.arrMname;

second.arrMlatitude = self.arrMlatitude;

second.arrMlongitude = self.arrMlongitude;

//跳转到下一页 (导航视图)

[self.navigationController pushViewController:second animated:YES];

}

//显示行高

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return 60;

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

#import<UIKit/UIKit.h>

@interface SecondTableViewController : UITableViewController

/**

*  城市名集合

*/

@property(strong,nonatomic) NSMutableArray *arrMname;

/**

*  相应城市的维度的集合

*/

@property(strong,nonatomic) NSMutableArray *arrMlatitude;

/**

*  相应城市经度的集合

*/

@property(strong,nonatomic) NSMutableArray *arrMlongitude;

/**

*  从第一页接收信息的集合

*/

@property(strong,nonatomic) NSMutableArray *arrRevice;

/**

*  获取索引值

*/

@property(assign,nonatomic) NSInteger index;

@end

#import "SecondTableViewController.h"

@interface SecondTableViewController ()

@end

@implementation SecondTableViewController

- (void)viewDidLoad {

[super viewDidLoad];

//添加背景色

self.view.backgroundColor = [UIColor colorWithRed:0.909 green:1.000 blue:0.482 alpha:1.000];

//设置导航栏的左按钮

UIBarButtonItem *leftbutton = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(back)];

self.navigationItem.leftBarButtonItem = leftbutton;

self.title = @"纬度与经度";

//唯一标识的重用

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"reuseIdentifier"];

}

/**

*  返回上一页

*/

-(void)back

{

//跳转到上一页

[self.navigationController popToRootViewControllerAnimated:YES];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

#pragma mark - Table view data source

//显示的分区数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableVie

{

return 3;

}

//每个分区显示的行数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return 1;

}

//显示每行的内容

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuseIdentifier" forIndexPath:indexPath];

if (indexPath.section == 0) {

cell.textLabel.text = self.arrMname[self.index];

}

else if(indexPath.section == 1) {

cell.textLabel.text = self.arrMlatitude[self.index];//纬度

}else

{

cell.textLabel.text = self.arrMlongitude[self.index];//经度

}

return cell;

}

//显示行高

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return 60;

}

//显示头部标题

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

{

if (section == 0) {

return @"显示纬度与经度";

}

return @"";

}

/*

// Override to support conditional editing of the table view.

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {

// Return NO if you do not want the specified item to be editable.

return YES;

}

*/

/*

// Override to support editing the table view.

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

if (editingStyle == UITableViewCellEditingStyleDelete) {

// Delete the row from the data source

[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

} else if (editingStyle == UITableViewCellEditingStyleInsert) {

// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view

}

}

*/

/*

// Override to support rearranging the table view.

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {

}

*/

/*

// Override to support conditional rearranging of the table view.

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {

// Return NO if you do not want the item to be re-orderable.

return YES;

}

*/

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

// Get the new view controller using [segue destinationViewController].

// Pass the selected object to the new view controller.

}

*/

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 8,978评论 3 38
  • 前言 最近忙完项目比较闲,想写一篇博客来分享一些自学iOS的心得体会,希望对迷茫的你有所帮助。博主非科班出身,一些...
    GitHubPorter阅读 1,411评论 9 5
  • 作者唯一QQ:228544117。。。。。 =========后面的都要新建一个文章 AppDelegate.h ...
    CC_iOS阅读 805评论 0 0
  • 哦吼吼,又研究了几天,把FMDB这个封装好的数据库搞定了,写了个简单的例子,基于FMDB的添删改查操作,界面很一般...
    lichengjin阅读 513评论 0 0
  • 从二月一直参加老师的课,从情绪的漩涡拔不出来到如今在家也能笑了,从在家根本呆不住到可以一个人在家也享受了,我深切体...
    英宝贝阅读 678评论 0 0