在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();