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 记
- IOS第三十天——利用xml解析查询火车票信息
- 利用dom4j解析.xml之查询标签的文本信息
- iOS利用GData解析XML
- IOS第三十三天——发送短信
- 12306火车票查询——Python
- 利用dom4j解析.xml之查询标签
- 利用dom4j解析.xml之查询属性
- 第四章:iOS应用漏洞利用 ——4.15 XML解析与安全
- IOS第三十五天——使用ZXing开发二维码
- 火车票查询
- 解析支付宝单笔交易查询接口返回的XML信息
- ios开发——XML解析
- iOS网络编程开发—JSON解析与XML解析
- 聚合数据iOS SDK 12306火车票查询订票演示示例
- IOS第三十一天——在IOS开发中操作sqlite3
- 解析XML文件信息
- 利用dom4j解析.xml之将xml文本信息封装成对象
- 利用simpleframework解析xml
- Socket中winsock.h和winsock2.h的不同
- Hibernate n+1问题
- Eclipse调试方法和常用快捷键
- 计算方法之用雅克比法求线性方程组
- WPF依赖属性
- IOS第三十天——利用xml解析查询火车票信息
- WEB 访问RemoteApp不能打开App
- 计算方法之改进的欧拉法计算常微分方程
- POI读取Excel文件的带注释小例子
- 您的计算机配置似乎是正确的,但该设备或资源(DNS 服务器)没有响应
- 计算方法之用变步长梯形求积公式求定积分
- 利用Apache POI操作EXCEL文档
- setTimeout函数兼容各浏览器运行执行效果
- ASP.NET,C# 获取当前插入行主键