顾名思义,我们是要利用Google的天气预报的API来开发一个天气预报程序.
Google天气的API为:http://www.google.com/ig/api?hl=zh-cn&weather=Beijing
我们来分析下这个API的相关参数:http表示的是使用Http请求获取数据.www.google.com/ig/api是GoogleAPI的接口.
?后面传递了两个参数,hl=zh-cn,这个参数表示的是国家代码. weather=Beijing,表示的是获取北京的天气信息.
那么,这一整个Url的意识就是,获取到中国北京的天气信息.
我们将这个Url放到浏览器的地址栏里,OK,浏览器收到了一份XML格式的文档.我们来看一下这个文档的格式.
根节点是接下来我们看下根节点下面的几个个节点
节点下边有这几个标签:
标签名称 | 标签意义 | 数据类型 |
city | 城市名称 | String |
postal_code | 请求的名称 | String |
latitude_e60 | 纬度坐标 | float |
longitude_e60 | 经度坐标 | float |
forecast_data | 预报时间 | String |
current_data_time | 当前时间 | String |
unit_system | 单位格式 | String |
我们在接着看下一个节点
这个节点包含的是当前的天气信息.
节点下边有这几个标签:
标签名称 | 标签意义 | 数据类型 |
condition | 天气状况 | String |
temp_f | 华氏温度 | float |
temp_c | 摄氏温度 | float |
humidity | 湿度 | String |
icon | 天气状况的图标 | String |
wind_condition | 风向风力 | String |
我们再接着看下一个节点:
该节点下面包含了这样几个标签
标签名称 | 标签意义 | 数据类型 |
day_of_week | 星期几 | String |
low | 最低温度 | float |
high | 最高温度 | float |
icon | 天气状况的图标 | String |
condition | 天气状况 | String |
API的数据分析到此告一段落了.
API的数据分析完成后,接下来我们就要对XML文档进行数据的解析,获取到xml文档中的数据.
而在XML解析之前呢,我们应该创建一个值对象,也就是实体类来存放我们解析出来的数据.
我们准备创建三个实体类来存放不同的数据.
CityInfo.java 存放城市信息.
CurrInfo.java 存放当前天气信息
ForeInfo.java 存放预报信息
CityInfo.java
package com.yongchun.weather.model;
/**
* 作者:肥鱼 QQ群:104780991 Email:[email protected]
* 关于:一条致力于Android开源事业的鱼,还是肥的.吃得多赚的少还不会暖床,求包养.
*/
public class CityInfo {
private String city_name;
private String postal_code;
private float latitude;
private float longitude;
private String forecast_time;
private String current_time;
private String unit_syetem;
public String getCity_name() {
return city_name;
}
public void setCity_name(String city_name) {
this.city_name = city_name;
}
public String getPostal_code() {
return postal_code;
}
public void setPostal_code(String postal_code) {
this.postal_code = postal_code;
}
public float getLatitude() {
return latitude;
}
public void setLatitude(float latitude) {
this.latitude = latitude;
}
public float getLongitude() {
return longitude;
}
public void setLongitude(float longitude) {
this.longitude = longitude;
}
public String getForecast_time() {
return forecast_time;
}
public void setForecast_time(String forecast_time) {
this.forecast_time = forecast_time;
}
public String getCurrent_time() {
return current_time;
}
public void setCurrent_time(String current_time) {
this.current_time = current_time;
}
public String getUnit_syetem() {
return unit_syetem;
}
public void setUnit_syetem(String unit_syetem) {
this.unit_syetem = unit_syetem;
}
}
package com.yongchun.weather.model;
/**
* 作者:肥鱼 QQ群:104780991 Email:[email protected]
* 关于:一条致力于Android开源事业的鱼,还是肥的.吃得多赚的少还不会暖床,求包养.
*/
public class CurrInfo {
private String condition;
private float temp_f;
private float temp_c;
private String humidity;
private String icon;
private String wind_condition;
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
public float getTemp_f() {
return temp_f;
}
public void setTemp_f(float temp_f) {
this.temp_f = temp_f;
}
public float getTemp_c() {
return temp_c;
}
public void setTemp_c(float temp_c) {
this.temp_c = temp_c;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getWind_condition() {
return wind_condition;
}
public void setWind_condition(String wind_condition) {
this.wind_condition = wind_condition;
}
}
ForeInfo.java
package com.yongchun.weather.model;
/**
* 作者:肥鱼 QQ群:104780991 Email:[email protected]
* 关于:一条致力于Android开源事业的鱼,还是肥的.吃得多赚的少还不会暖床,求包养.
*/
public class ForeInfo {
private String day_of_week;
private float low;
private float high;
private String icon;
private String condition;
public String getDay_of_week() {
return day_of_week;
}
public void setDay_of_week(String day_of_week) {
this.day_of_week = day_of_week;
}
public float getLow() {
return low;
}
public void setLow(float low) {
this.low = low;
}
public float getHigh() {
return high;
}
public void setHigh(float high) {
this.high = high;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getCondition() {
return condition;
}
public void setCondition(String condition) {
this.condition = condition;
}
// @Override
// public String toString() {
// // TODO Auto-generated method stub
// String forecastInfo = "时间:" + day_of_week + "\n最低温度:"
// + Float.toString(low) + "\n最高温度:" + Float.toString(high)
// + "\n图标路径:" + icon + "\n天气状况:" + condition;
// return super.toString();
// }
}