IOS第三十天——利用xml解析查询火车票信息

来源:互联网 发布:java微信飞机大战 编辑:程序博客网 时间:2024/05/23 21:14

最近因为个人原因,当然也有些迷茫,不过慢慢地就恢复正常了,开始继续学习IOS了,今天凌晨一点地WWDC,好像Apple的IOS7完全扁平化了,诶,看来Cook同学还是更加注重市场啊,嗯,话不多话,咱们今天来学习下xml解析查询火车票的信息,即xml通信。

从网上找了个可以获取火车票信息,网址是:http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getStationAndTimeByTrainCode?TrainCode=车次编号&UserID=

首先我们设计了如下的一个xib视图:

这里我们使用了一个第三方的xml解析库GDataXMLNode

,虽然IOS自带的SDK库中也有相应的处理xml文件的类,但好像第三方的一些类库更佳简洁高效,我们看下它的使用方法。

在我们自己的类中引用该类库,然后我们来实现下NSUrlConnection的几个方法:

#define kHttpAddress1 @"http://webservice.webxml.com.cn/WebServices/TrainTimeWebService.asmx/getStationAndTimeByTrainCode?TrainCode="#define kHttpAddress2 @"&UserID="-(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse *)response{    NSLog(@"%@receiveResponse.\n",self);}-(void)connection:(NSURLConnection*)connection didReceiveData:(NSData *)data{    NSLog(@"%@ didReceiveData\n",self);    NSString* strPartData=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];    NSLog(@"=== %@", strPartData);    [self.strReceivedData appendString:strPartData];}
//connection连接完成获取数据结束-(void)connectionDidFinishLoading:(NSURLConnection*)connection{    NSLog(@"%@ connectionDidFinish.\n",self);        //通过字符串内容创建,GDataXMLDocument实例      NSError*error = nil;    GDataXMLDocument*doc = [[[GDataXMLDocument alloc]initWithXMLString:self.strReceivedData options:0 error:&error]autorelease];    if(error)    {        NSLog(@"Create GDataXMLDocument error,error code: %@",[error localizedDescription]);        return;    }    //首先查找到根元素    GDataXMLDocument* rootElement = [doc rootElement];    //在根元素里面查找所有NAME为“Children"的子元素    NSArray*arrStudentElement = [rootElement elementsForName:@"string" ];    //     //创建接收解释结果的可变字符串       self.strResult= nil;       self.strResult = [NSMutableString stringWithCapacity:100];    [self.strResult appendString:@"车次信息" ];    [self.strResult appendString:@"\r\n"];    for (GDataXMLNode*node in arrStudentElement) {        for (GDataXMLNode*subNode in node.children)        {            [self.strResult appendString:subNode.stringValue];            [self.strResult appendString:@"\r\n"];            NSLog(@"%@",subNode.stringValue);        }//        [self.strResult appendString:@"\r\n"];    }    [self.strResult appendString:@"解析完成"];    self.textView.text = self.strResult;    NSLog(@"%@",self.strResult);        [connection release];    connection=nil;    [self.strReceivedData release];    self.strReceivedData=[[NSMutableString alloc]initWithCapacity:100];    }//如果连接失败-(void)connection:(NSURLConnection*)connection didFailWithError:(NSError *)error{    NSLog(@"Fetch error%@",error.localizedDescription);    [connection release];    connection=nil;    [self.strReceivedData release];    self.strReceivedData=[[NSMutableString alloc]initWithCapacity:0];}
//点击按钮方法- (IBAction)clickButton:(id)sender {          NSString* strstart=self.lblstart.text;        NSString* strUserid=@"";    NSString* strurl1=[kHttpAddress1 stringByAppendingString:strstart];    NSString* strurl2=[kHttpAddress2 stringByAppendingString:strUserid];                 NSString* strURL=[strurl1 stringByAppendingString:strurl2];        NSLog(@"%@",strURL);        NSString* strURLLegal=[strURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];        if (!strURLLegal) {            return;        }        NSURL* urlRequest=[NSURL URLWithString:strURLLegal];        NSURLRequest* request=[NSURLRequest requestWithURL:urlRequest cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60.0];        NSURLConnection* connection=[[NSURLConnection alloc  ]initWithRequest:request delegate:self];        [connection start];}
OK,这样儿我们就完成了从远程地址查询xml并解析列车车次信息,运行下,效果如下:

但是很不幸的,被键盘给盖住了。。。所以我们还要添加如下的一个方法,实现点击return的时候隐藏键盘:

- (IBAction)resignTextFiled:(id)sender{    [self.lblstart resignFirstResponder];}

OK,那么重新运行下,我们就可以看到列车车次信息了:

好了,今天先学到这里,换换脑子,写python去了。

2013年06月11日,Eric.Tang 记

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 4周孩子脾气大怎么办 老公脾气暴躁爱骂人怎么办? 当妈妈了脾气不好怎么办 父亲很坏不顾家很会赌钱怎么办 妈妈骂我很难听怎么办 父母管的太严怎么办 2岁宝宝哭闹不止怎么办 8岁儿童叛逆期怎么办 两岁宝宝叛逆期怎么办 4个月小孩哭怎么办 2个月孩子爱哭怎么办 小孩挑衅大人被大人打怎么办 在学校犯了错怎么办 孩子在学校爱捣乱怎么办 小孩老是在学校捣乱怎么办 孩子不听话每天会发火怎么办 孩子不听话控制不住发火怎么办 儿子不听话我总会发火怎么办 小孩好动精力不集中怎么办 孩子好动精力不集中怎么办 一岁半宝宝咳嗽半个月了怎么办 6岁儿童上课调皮怎么办 小孩挨揍后精神失控怎么办 孩子不听话把我胃气疼了怎么办 因为孩子不听话夫妻经常吵架怎么办 11岁儿子不听话了怎么办 二十岁的儿子还不听话怎么办 幼儿园小班幼儿不听老师的话怎么办 幼师对待不听话的孩子该怎么办 2岁宝宝不吃饭只喝奶怎么办 孩子哭着喊妈妈不睡觉怎么办 孩子晚上不睡觉一直哭怎么办 孩子不睡觉还哭怎么办 孩子晚上不睡觉老哭怎么办? 4岁宝宝叛逆期怎么办 驾考紧张脚抖怎么办 驾考科目三紧张怎么办 孩子不自信容易紧张怎么办 在人多时候紧张怎么办 考科目二很紧张怎么办 明天出成绩很紧张怎么办