网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  使用yahoo service实现天气预报     
  文章作者:未知  文章来源:水木森林  
  查看:96次  录入:管理员--2007-11-17  
 

天气预报是非常有用的服务,如果能在网站上集成天气预报,能极大地方便用户查询。

寻遍了国内所有的气象站点,没找见提供web服务的,太小气了,只能去国外找。noaa(www.weather.gov)提供一个web服务,但是死活连不上服务器,估计被屏蔽了,其他提供全球天气预报的有www.weather.com和yahoo,

不过weather.com的服务太麻烦,还需要注册,相比之下,yahoo的天气服务既简单又快速,只需一个http请求,然后解析返回的xml即可获得天气预报。

以北京为例,在weather.yahoo.com查找北京的城市代码为chxx0008,对应的url为:

http://xml.weather.yahoo.com/forecastrss?u=c&p=chxx0008

然后,通过sax解析返回的xml:

url url = new url("http://xml.weather.yahoo.com/forecastrss?u=c&p=chxx0008");
inputstream input = url.openstream();
saxparserfactory factory = saxparserfactory.newinstance();
factory.setnamespaceaware(false);
saxparser parser = factory.newsaxparser();
parser.parse(input, new yahoohandler());

自己定义一个yahoohandler来响应sax事件:

/**
 * for more information, please visit: http://www.crackj2ee.com
 * author: liao xuefeng
 */
public class yahoohandler extends defaulthandler {

    public void startelement(string uri, string localname, string qname, attributes attributes)

throws saxexception {
        if("yweather:condition".equals(qname)) {
            string s_date = attributes.getvalue(3);
            try {
                date publish = new simpledateformat("eee, dd mmm yyyy hh:mm a z",

locale.us).parse(s_date);
                //system.out.println("publish: " + publish.tostring());
            }
            catch (exception e) {
                e.printstacktrace();
                throw new saxexception("cannot parse date: " + s_date);
            }
        }
        else if("yweather:forecast".equals(qname)) {
            string s_date = attributes.getvalue(1);
            date date = null;
            try {
                date = new simpledateformat("dd mmm yyyy", locale.us).parse(s_date);
            }
            catch (exception e) {
                e.printstacktrace();
                throw new saxexception("cannot parse date: " + s_date);
            }
            int low = integer.parseint(attributes.getvalue(2));
            int high = integer.parseint(attributes.getvalue(3));
            string text = attributes.getvalue(4);
            int code = integer.parseint(attributes.getvalue(5));
            system.out.println("weather: "+ text + ", low=" + low + ", high=" + high);
        }
        super.startelement(uri, localname, qname, attributes);
    }
}

运行结果:

weather: partly cloudy, low=7, high=16
weather: sunny, low=7, high=20

 
 
上一篇: 实例讲解移动qq在线平台(一)    下一篇: j2me编程实践之联网开发
  相关文档
java 库的建立方法及其实例(1) 11-17
hibernate入门 - 基础配置 11-17
java程序中通用的体系模式 windancery 11-17
unicode编码 解释ucs、utf、bmp、bom 11-17
java连接sql server 2000 11-16
atan 方法 11-16
j2ee基础 用struts框架开发mvc系统步骤 11-16
在jdbc警告的帮助下修正数据库 11-17
j2ee综合--总结java编程中的经验教训 01-23
hibernate/spring/struts使用opensessioninview 11-17
一个非常简单,非常短小的线程池 11-17
java窗口的实现---计算器(算加法) 11-17
java 学习之了解 java 的运行环境 11-17
java程序异常处理的特殊情况 11-17
struts1.1中的异常应用实践 11-17
j2ee的web和企业架构(wea)设计模式 11-17
java 使用命令行参数 11-17
探索string 类 11-17
j2ee中几种业务代理模式的实现和比较 11-16
java编译器对于string常量表达式的优化 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息