在android上显示天气预报,通过解析一些天气网站的xml文档。
比如网址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=北京
打开:
解析之后可以得到里面的内容。显示了解了一下解析xml的几种方式:dom,sax,pull,也没看懂。可喜的是网上有教程视频,搜“android每天写一个app第05天天气预报”,讲的很清晰。参考之后,就很轻松了。下面是主要代码及注释:
因为与网络建立连接,比较耗时,所以放在线程里。
new Thread(){ public void run(){ try { URL url=new URL(path); HttpURLConnection conn=(HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); //等待加载10秒 conn.setConnectTimeout(10000); int code=conn.getResponseCode(); //状态码是200,说明正常响应请求数据 if(code==200){ InputStream is=conn.getInputStream(); //创建xml解析器 XmlPullParser parser=Xml.newPullParser(); //根据指定的编码来解析xml文档 parser.setInput(is,"UTF-8"); //得到当前事件类型 int type=parser.getEventType(); List<String> list=new ArrayList<String>(); //计息到文档结束 while(type!=XmlPullParser.END_DOCUMENT){ if(type==XmlPullParser.START_TAG){ //当是<string></string>括起来的都存进arraylist if("string".equals(parser.getName())){ String str=parser.nextText(); list.add(str); } } type=parser.next(); } //通过,handler传出数据 Message m=Message.obtain(); m.what=SUCCESS; m.obj=list; handler.sendMessage(m); }else{ Message m=Message.obtain(); m.what=Error; } } catch (Exception e) { e.printStackTrace(); } } }.start();