`
gstarwd
  • 浏览: 1525058 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利 用xml,解析yahoo天气代码(java)

阅读更多

  利 用xml,解析yahoo天气代码~~~ 

<script type="text/javascript"> document.body.oncopy = function() { if (window.clipboardData) { setTimeout(function() { var text = clipboardData.getData(&quot;text&quot;); if (text &amp;&amp; text.length &gt; 300) { text = text + &quot;\r\n\n本文来自CSDN博客,转载请标明出处:&quot; + location.href; clipboardData.setData(&quot;text&quot;, text); } }, 100); } } </script><script type="text/javascript"> function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&amp;u=' + escape(d.location.href) + '&amp;c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }</script> 我很菜,曾为这个天气代码搞了好几天,不过现在我终于可以实现了
网站首页上每天都能够有最新的天气情况,而不用自己手动搜集,确实方便了很多,下面我就将我的经验介绍一下

关于天气服务,我是用的yahoo提供的天气服务,网上搜索的时候,据说weather.com也提供这个服务,不过需要注册,我去看看了,甚至连注册的地方都没找到(汉自己的e文阿),就懒得用他们家的了
yahoo的天气服务地址是
http://xml.weather.yahoo.com/
在yahoo的技术支持里对于天气的代码有详细的解释
http://developer.yahoo.com/weather/

简单说来,我们可以发送请求到yahoo,它就会返回一个xml文件,请求的地址如下:
http://xml.weather.yahoo.com/forecastrss?p=CHXX0008&u=c
我们得到的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>
 <title>Yahoo! Weather - Beijing, CH</title>
 <link>http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CH/*http://xml.weather.yahoo.com/forecast/CHXX0008_c.html</link>
 <description>Yahoo! Weather for Beijing, CH</description>
 <language>en-us</language>
 <lastBuildDate>Tue, 26 Dec 2006 12:00 pm CST</lastBuildDate>
 <ttl>60</ttl>
 <yweather:location city="Beijing" region="" country="CH" />
 <yweather:units temperature="C" distance="km" pressure="mb" speed="kph" />
 <yweather:wind chill="-7" direction="300" speed="32" />
 <yweather:atmosphere humidity="27" visibility="999" pressure="0" rising="2" />
  <yweather:astronomy sunrise="7:35 am" sunset="4:56 pm" />
  <image>
 <title>Yahoo! Weather</title>
 <width>142</width>
 <height>18</height>
 <link>http://weather.yahoo.com/</link>
 <url>http://us.i1.yimg.com/us.yimg.com/i/us/nws/th/main_142b.gif</url>
 </image>
 <item>
 <title>Conditions for Beijing, CH at 12:00 pm CST</title>
  <geo:lat>39.93</geo:lat>
 <geo:long>116.28</geo:long>
  <link>http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CH/*http://xml.weather.yahoo.com/forecast/CHXX0008_c.html</link>
 <pubDate>Tue, 26 Dec 2006 12:00 pm CST</pubDate>
 <yweather:condition text="Fair" code="34" temp="0" date="Tue, 26 Dec 2006 12:00 pm CST" />
 <description><![CDATA[
<img src="http://us.i1.yimg.com/us.yimg.com/i/us/we/52/34.gif" /><br />
 <b>Current Conditions:</b><br />
 Fair, 0 C<BR /><BR />
 <b>Forecast:</b><BR />
  Tue - Sunny. High: 1 Low: -8<br />
  Wed - Sunny. High: 1 Low: -9<br />
 <br />
<a href="http://us.rd.yahoo.com/dailynews/rss/weather/Beijing__CH/*http://xml.weather.yahoo.com/forecast/CHXX0008_c.html">Full Forecast at Yahoo! Weather</a><BR/>
 (provided by The Weather Channel)<br/>
 ]]></description>
 <yweather:forecast day="Tue" date="26 Dec 2006" low="-8" high="1" text="Sunny" code="32" />
<yweather:forecast day="Wed" date="27 Dec 2006" low="-9" high="1" text="Sunny" code="32" />
  <guid isPermaLink="false">CHXX0008_2006_12_26_12_0_CST</guid>
 </item>
</channel>
</rss>
<!-- p6.weather.scd.yahoo.com uncompressed Tue Dec 26 21:04:50 PST 2006 -->

看到了吧,里面有我们需要的数据,这时我们只要通过xml操作读取到里面的数据就可以了。
xml的操作我所知道有dom,sax api和jdom三种方式,随便哪一种你都可以,我用了sax这种方式

                        Weather weather=new Weather();
                        Vector vector=new Vector();
                        YahooHandler yh=new YahooHandler();

                        URL url=new URL("http://localhost:8080/daemon/weather.xml");
                        InputStream input=url.openStream();
                        SAXParserFactory factory = SAXParserFactory.newInstance();
                        factory.setNamespaceAware(false);
                        SAXParser parser = factory.newSAXParser();
                        parser.parse(input, yh);
                        vector=yh.getVector();
                        weather=(Weather)vector.elementAt(0);
在这里我有一个weather.class封装了一些weather的属性,一个yahoohandler用来解析数据
主要就是这么一些语句:

    public void startElement(String name,AttributeList attributes) throws SAXException{
        String temp_date;
       
        if(name.equalsIgnoreCase("item")){
            weather=new Weather();
        }else if(name.equalsIgnoreCase("yweather:condition")){
            temp_date=attributes.getValue("date");
            System.out.println("pubDate is :"+temp_date);
            //weather.setPubDate();       
        }else if(name.equalsIgnoreCase("description")){
            //System.out.println("When ther is description the temp_date is :"+temp_date);
        }else if(name.equalsIgnoreCase("yweather:forecast")){
            temp_date=attributes.getValue("date");
            String day=attributes.getValue("day");
            int low=Integer.parseInt(attributes.getValue("low"));
            int high=Integer.parseInt(attributes.getValue("high"));
            String text=attributes.getValue("text");
           
            //将字符串日期转换为日期格式
           
            if(temp_sign==0){
                weather.setTodayDay(day);
                weather.setTodayLow(low);
                weather.setTodayHigh(high);
                weather.setTodayText(text);
                //System.out.println("Date is :"+temp_date+" day is :"+day+" low :"+low+" high :"+high+" text:"+text);
                temp_sign=1;
            }else if(temp_sign==1){
                weather.setTomDay(day);
                weather.setTomLow(low);
                weather.setTomHigh(high);
                weather.setTomText(text);
                //System.out.println("Date is :"+temp_date+" day is :"+day+" low :"+low+" high :"+high+" text:"+text);
                temp_sign=0;
            }
       
        }

其实只要自己认真分析分析,这个天气预报的抓取一点都不难~~~~
分享到:
评论

相关推荐

    java获取yahoo天气预报代码

    在Java编程领域,获取Yahoo天气预报的代码是一个实用的示例,它涉及到网络请求、XML解析和API调用等技术。Yahoo提供了公开的天气API,允许开发者通过HTTP请求获取特定地区的天气信息。以下是对这个主题的详细解释: ...

    yahoo 天气预报 java API

    Yahoo天气预报Java API是开发人员可以利用的工具,它允许应用程序与Yahoo的天气服务进行交互,获取并展示全球各地的天气信息。这个API基于HTTP协议,使用RESTful设计原则,使得开发者可以方便地通过发送HTTP请求来...

    jsp实现XML解析文档

    【JSP实现XML解析】是Web开发中常见的一项任务,主要涉及到XML文档的处理和解析。XML(eXtensible Markup Language)是一种可扩展标记语言,常用于数据交换和存储结构化信息。JSP(JavaServer Pages)是Java平台上的...

    JAVA天气预报详解

    综合来看,这份技术文档不仅向开发者展示了如何利用雅虎天气预报接口开发天气预报程序的全过程,还介绍了相关的技术知识,例如网络通信、XML解析和Java GUI开发等,是Java开发者进行类似项目时的重要参考文档。

    java实现天气预报(解释+源代码)

    本节将详细介绍如何使用Java SE中自带的JAXP(Java API for XML Processing)库来获取和解析Yahoo天气预报XML数据。 ##### 3.1 获取XML文档 使用Java的`HttpURLConnection`类来发送HTTP请求,并获取响应的XML文档...

    雅虎天气预报WIDGET

    4. **JSON解析**:雅虎天气API返回的数据通常是JSON格式,因此需要使用Gson、Jackson或org.json等库进行解析,将数据转化为Java对象。 5. **地理定位与城市搜索**:为了允许用户搜索城市,开发者可能需要集成地理...

    JAVA上百实例源码以及开源项目源代码

    Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包10

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    高仿雅虎天气应用.zip

    【标题】"高仿雅虎天气应用.zip" 暗示了这个压缩包包含的是一款模仿雅虎天气应用的项目源代码。雅虎天气应用是一款知名的手机应用,提供实时天气信息、预报、以及与当地环境相关的图片。"高仿"意味着这个应用在设计...

    java开源包6

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包4

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包9

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包101

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包5

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包3

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    Java资源包01

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    Android应用源码安卓高仿雅虎天气项目源码.rar

    这个压缩包文件“Android应用源码安卓高仿雅虎天气项目源码.rar”是一个包含有Android应用程序源代码的资源,其目标是模仿雅虎天气应用的界面和功能。通过分析和学习这个源码,我们可以深入理解Android应用开发的多...

    基于j2me的在线天气预报程序

    3. **数据解析**:了解JSON或XML解析的基本概念,学习使用相应的解析库。 4. **界面展示**:设计和实现用户界面,将解析后的天气信息呈现给用户。 5. **性能优化**:考虑如何减少网络负载,优化内存使用,提升用户...

Global site tag (gtag.js) - Google Analytics