摘 要 详细介绍了如何结合使用JavaSE中自带的JAXP以及Yahoo提供的天气预报XML信息服务来实现桌面版的Yahoo天气预报客户端。通过实际案例的开发,向读者介绍了如何使用Java获取网络上的XML文档,以及如何使用JAXP对XML文档进行解析。
关键词 XML;JAXP; Yahoo; 天气预报
1 Yahoo天气预报
Yahoo作为最大的中文门户网站之一,提供了种类繁多的各种信息服务,其中也包括了非常实用的天气预报信息服务。非常值得注意的是,Yahoo提供的天气预报信息不但可以通过登录Yahoo的网站浏览,也可以获取特定格式的XML文档自行解析。有了第二种天气预报服务,就可以自己开发天气预报的客户端软件,或把天气预报功能嵌入到自己的桌面软件或Web应用中。
获取Yahoo天气预报的XML文档非常简单,只要使用如下格式的URL即可:
http://xml.weather.yahoo.com/forecastrss?u=c&p=CHXX0008
其中查询参数u表示温度单位,若摄氏度则为“c”,华氏度则为“f”。查询参数p表示地点,后跟城市代码。城市代码是一个8位长度的字符串,前四位固定为“CHXX”,后四位为数字,表示不同的城市。例如,“0008”表示北京,常见的城市代码如表1所列。
表1 城市代码
代码 |
城市 |
代码 |
城市 |
CHXX0008 |
北京 |
CHXX0044 |
杭州 |
CHXX0116 |
上海 |
CHXX0502 |
海口 |
CHXX0037 |
广州 |
CHXX0131 |
唐山 |
CHXX0138 |
武汉 |
CHXX0321 |
扬州 |
输入了上述的URL后,就可以获得Yahoo提供的当天北京地区天气预报信息的XML文档,其基本内容如下:
<?xml version="1.0" encoding="UTF-8"
standalone="yes" ?>
<rss version="2.0"
xmlns:yweather ="http://xml.weather.yahoo.com/ns/rss/1.0"
xmlns:geo ="http://www.w3.org/2003/01/geo/wgs84_pos#">
<channel>
<!-- 此处省略了一些不重要代码-->
<yweather:wind chill="32"
direction="130" speed="11.27" />
<yweather:atmosphere humidity="49"
visibility="999.00" pressure="999" rising="0" />
sunrise="4:53 am" sunset="7:46 pm"/>
<!-- 此处省略了一些不重要代码 -->
<item>
<!-- 此处省略了一些不重要代码 -->
<pubDate>Sun, 06 Jul 2008 3:00 pm CST</pubDate>
<yweather:condition text="Fair" code="34" temp
="32" date="Sun, 06 Jul 2008 3:00 pm CST" /> <!-- 此处省略了一些不重要代码 -->
|