`

获取雅虎的天气情况

阅读更多

package lee;

import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * this class is define one method to get weather information by yahoo API
 *
 * @author tatsuya
 *
 */
public class GetWeatherInfo {

 public static final String BEI_JING = "0008";
 public static final String TIAN_JING = "0133";
 public static final String HANG_ZHOU = "0044";
 public static final String HE_FEI = "0448";
 public static final String SHANG_HAI = "0116";
 public static final String FU_ZHOU = "0031";
 public static final String CHONG_QING = "0017";
 public static final String NAN_CHANG = "0097";
 public static final String XIANG_GANG = "0049";
 public static final String JI_NAN = "0064";
 public static final String AO_MEN = "0512";
 public static final String ZHENG_ZHOU = "0165";
 public static final String HU_HE_HAO_TE = "0249";
 public static final String WU_NU_MU_QI = "0135";
 public static final String CHANG_SHA = "0013";
 public static final String YIN_CHUAN = "0259";
 public static final String GUANG_ZHOU = "0037";
 public static final String LA_SA = "0080";
 public static final String HA_KOU = "0502";
 public static final String NAN_NING = "0100";
 public static final String CHENG_DU = "0016";
 public static final String SHI_JIA_ZHUANG = "0122";
 public static final String GUI_YANG = "0039";
 public static final String TAI_YUAN = "0129";
 public static final String KUI_MING = "0076";
 public static final String SHEN_YANG = "0119";
 public static final String XI_AN = "0141";
 public static final String CHANG_CHUN = "0010";
 public static final String LAN_ZHOU = "0079";
 public static final String XI_NING = "0236";
 public static final String NAN_JING = "0099";

 public static void main(String[] args) {
  GetWeatherInfo info = new GetWeatherInfo();
  String weather = info.getWeather(GetWeatherInfo.SHI_JIA_ZHUANG);
  System.out.println(weather);
 }

 /**
  * get weather information by city code
  *
  * @param cityCode
  * @return
  */
 public String getWeather(String cityCode) {
  URL url;
  String result = null;
  try {
   url = new URL("http://weather.yahooapis.com/forecastrss?p=CHXX" + cityCode + "&u=c");
   URLConnection conn = url.openConnection();

   Document doc = stringToElement(conn.getInputStream());
   NodeList nodeList = doc.getElementsByTagName("channel");
   for (int i = 0; i < nodeList.getLength(); i++) {
    Node node = nodeList.item(i);
    NodeList nodeList1 = node.getChildNodes();
    for (int j = 0; j < nodeList1.getLength(); j++) {
     Node node1 = nodeList1.item(j);
     if (node1.getNodeName().equalsIgnoreCase("item")) {
      NodeList nodeList2 = node1.getChildNodes();
      for (int k = 0; k < nodeList2.getLength(); k++) {
       Node node2 = nodeList2.item(k);
       if (node2.getNodeName().equalsIgnoreCase("yweather:forecast")) {
        NamedNodeMap nodeMap = node2.getAttributes();
        Node dayNode = nodeMap.getNamedItem("day");
        Node lowNode = nodeMap.getNamedItem("low");
        Node highNode = nodeMap.getNamedItem("high");
        Node textNode = nodeMap.getNamedItem("text");
        Node codeNode = nodeMap.getNamedItem("code");
        String day = "今天";
        if (result == null) {
         result = new String("");
        } else {
         day = "明天";
        }
        result = result + day + " " + switchW(Integer.parseInt(codeNode.getNodeValue())) + " 最低温度:" + lowNode.getNodeValue() + "度 最高温度:" + highNode.getNodeValue() + "度 ";
       }
      }
     }
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return result;
 }

 public Document stringToElement(InputStream input) {
  try {
   DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
   Document doc = db.parse(input);
   return doc;
  } catch (Exception e) {
   return null;
  }
 }

 private String switchW(int code) {
  String result = null;
  switch (code) {
  case 0:
   result = "龙卷风";
   break;
  case 1:
   result = "热带风暴";
   break;
  case 2:
   result = "飓风";
   break;
  case 3:
   result = "强雷阵雨";
   break;
  case 4:
   result = "雷阵雨";
   break;
  case 5:
   result = "小雨加雪";
   break;
  case 6:
   result = "雨加冰雹";
   break;
  case 7:
   result = "雪加冰雹";
   break;
  case 8:
   result = "冰雨";
   break;
  case 9:
   result = "毛毛雨";
   break;
  case 10:
   result = "冻雨";
   break;
  case 11:
   result = "阵雨";
   break;
  case 12:
   result = "阵雨";
   break;
  case 13:
   result = "小雪";
   break;
  case 14:
   result = "零星小雪";
   break;
  case 15:
   result = "高吹雪";
   break;
  case 16:
   result = "雪";
   break;
  case 17:
   result = "冰雹";
   break;
  case 18:
   result = "雨夹雪";
   break;
  case 19:
   result = "尘";
   break;
  case 20:
   result = "雾";
   break;
  case 21:
   result = "薄雾";
   break;
  case 22:
   result = "多烟的";
   break;
  case 23:
   result = "大风";
   break;
  case 24:
   result = "有风";
   break;
  case 25:
   result = "寒冷";
   break;
  case 26:
   result = "阴天";
   break;
  case 27:
   result = "夜间阴天";
   break;
  case 28:
   result = "白天阴天";
   break;
  case 29:
   result = "夜间部分多云";
   break;
  case 30:
   result = "白天部分多云";
   break;
  case 31:
   result = "夜间清亮";
   break;
  case 32:
   result = "晴朗";
   break;
  case 33:
   result = "转晴";
   break;
  case 34:
   result = "转晴";
   break;
  case 35:
   result = "雨夹冰雹";
   break;
  case 36:
   result = "热";
   break;
  case 37:
   result = "雷阵雨";
   break;
  case 38:
   result = "雷阵雨";
   break;
  case 39:
   result = "雷阵雨";
   break;
  case 40:
   result = "雷阵雨";
   break;
  case 41:
   result = "大雪";
   break;
  case 42:
   result = "阵雪";
   break;
  case 43:
   result = "大雪";
   break;
  case 44:
   result = "多云";
   break;
  case 45:
   result = "雷";
   break;
  case 46:
   result = "阵雪";
   break;
  case 47:
   result = "雷雨";
   break;
  case 3200:
   result = "程序错误";
   break;
  default:
   break;
  }
  return result;
 }

}

分享到:
评论

相关推荐

    获取雅虎天气预报API

    在获取雅虎天气API数据时,返回的结果通常是以JSON格式呈现。例如,你可以得到一个包含地点、天气状况、温度等信息的对象结构。 在提供的文件列表中,我们可以看到以下几个关键文件: 1. cJSON.c 和 cJSON.h:这是...

    获取雅虎天气YahooWeatherHttp_20150827

    《雅虎天气YahooWeatherHttp API详解及应用》 在当今数字化时代,获取实时天气信息对于日常生活、商业决策以及科学研究都至关重要。雅虎WeatherHttp API是一个强大的工具,它为开发者提供了简单便捷的方式,来获取...

    获取雅虎天气预报

    获取雅虎天气,隔个省,非常方面,特别好,我测试了好多此,相当不错

    yahoo.rar_weather yahoo_天气_天气预报 _雅虎天气_雅虎天气获取

    通常,获取雅虎天气API数据的步骤如下: 1. 注册和获取API密钥:首先,你需要在雅虎开发者网络(YDN)注册并申请一个API密钥,这是访问其服务的凭证。 2. 构建HTTP请求:使用这个API密钥,构建一个HTTP GET请求到...

    雅虎天气API调用

    雅虎天气API调用是开发人员获取实时天气信息的一种方式,它允许开发者通过发送特定的请求到雅虎的服务器,然后获取返回的JSON或XML格式的天气数据。这个API广泛应用于移动应用、网站或者任何需要集成天气信息的系统...

    雅虎天气获取

    在IT行业中,获取在线数据是常见的任务之一,而雅虎天气API是一个经典的例子,它允许开发者轻松地获取到实时的天气信息。这个项目的核心在于利用雅虎提供的接口,结合Android平台进行开发,并通过JSON解析技术来处理...

    雅虎天气城市代码

    当需要查询特定城市的天气时,开发者会将这个代码作为API请求的一部分发送到天气服务的服务器,以获取该城市的天气情况。 在上述提供的部分内容中,包含了中国多个城市的雅虎天气预报城市代码。这些城市代码可以...

    雅虎天气预报WIDGET

    雅虎天气预报WIDGET就是一个这样的小部件,它将天气信息直接展示在用户的手机桌面上,让用户随时随地掌握天气情况。 开发这样一个WIDGET需要具备以下几个关键知识点: 1. **Android SDK**:开发者需要熟悉Android...

    访问雅虎天气示例源码

    访问雅虎天气示例源码 ...程序通过WebClient类访问雅虎天气服务获取数据,分析数据后将内容展现。 页面布局也比较简单,ListBox可以选择城市,单击城市可以通过图片和文本 控件显示。可获得最近两天天气情况。

    雅虎天气信息OPENPLI

    这个特定的IPK文件版本为1.0,表明是该插件的首个正式版本,可能包含了获取、解析和显示雅虎天气信息的基本功能,适用于所有类型的设备。 “城市代码.txt”文件则可能是用来配置插件的。这个文件很可能包含了雅虎...

    Python3 XML 获取雅虎天气的实现方法

    在本文中,我们将探讨如何使用Python3和XML解析库来获取雅虎天气信息。首先,我们需要了解XML(Extensible Markup Language),它是一种用于存储和传输数据的标准格式。在Python中,我们可以使用内置的`xml.parsers....

    高仿雅虎天气应用.zip

    2. **API接口使用**:雅虎天气应用获取数据通常依赖于天气API,如雅虎的Weather API或者开放天气地图等。开发者需要理解如何请求和解析JSON或其他数据格式来获取和展示天气信息。 3. **UI/UX设计**:模仿雅虎天气...

    本应用是以变形金刚作为主题元素的实用型Android天气软件界面高仿雅虎天气数据来自中国天气网

    本应用以变形金刚为主题元素,设计出实用型的Android天气软件界面,高度仿照雅虎天气的风格。用户可以通过该应用方便地获取天气信息,让天气预报变得更加有趣和生动。该应用的天气数据来源于中国天气网,确保了数据...

    解析雅虎天气API返回的XML数据资料.pdf

    【雅虎天气API】是获取天气信息的一种方式,它返回的数据格式通常是XML。XML(Extensible Markup Language)是一种用于标记数据的语言,具有良好的结构化特性,使得数据易于解析和处理。 在解析雅虎天气API返回的...

    仿雅虎天气下拉刷新

    对于"仿雅虎天气下拉刷新"的实现,开发者可能从某个开源项目中获取灵感并进行了修改。开源社区为开发者提供了丰富的资源,例如GitHub上有许多关于下拉刷新和模糊背景的项目。通过研究这些项目,开发者可以学习到如何...

    雅虎天气puremvc例子 (改至网络)

    在这个例子中,可能会有一个`WeatherProxy`,它负责与雅虎天气API进行交互,获取并存储天气信息。当数据发生变化时,`WeatherProxy`会通知其他组件。 2. **视图(View)**:视图层主要处理用户界面和展示数据。可能...

    VS工具编写的一个访问雅虎天气示例源码

    标题中的“VS工具编写的一个访问雅虎天气示例源码”揭示了这是一个使用Visual Studio(VS)开发的项目,目标是展示如何通过编程方式获取雅虎天气服务提供的天气信息。这个示例可能包括了实时天气数据以及天气预报的...

    yahoo 天气预报 java API

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

    雅虎天气小偷(114拉界面) Build 20080921-ASP源码.zip

    【雅虎天气小偷(114拉界面) Build 20080921-ASP源码.zip】是一个包含ASP源代码的压缩文件,主要用于实现一个与雅虎天气接口交互的小应用程序,该程序可能用于展示特定地区的实时天气信息。在2008年9月21日构建的这个...

Global site tag (gtag.js) - Google Analytics