1

我的目的是开发一个从 yahoo 天气 api 检索天气数据的 C# 表单应用程序。我需要该程序从雅虎获取天气数据并在相应的文本输入中检索。代码如下..

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
using System.Xml;
using System.IO;
using System.Web;
using System.Speech.Recognition;
using System.Speech.Synthesis;

namespace weather
{
    public partial class Form1 : Form
    {
        string Temperature;
        string Condition;
        string Humidity;
        string WindSpeed;
        string Town;
        string TFCond;
        string TFHigh;
        string TFLow;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void GetWeather()
        {
            string query = String.Format("http://weather.yahooapis.com/forecastrss?w=1319153");
            //string query = String.Format("http://weather.yahooapis.com/forecastrss?w=2502265");
            XmlDocument wData = new XmlDocument();
            wData.Load(query);

            XmlNamespaceManager manager = new XmlNamespaceManager(wData.NameTable);
            manager.AddNamespace("yweather","http://xml.weather.yahoo.com/ns/rss/1.0");

            XmlNode channel = wData.SelectSingleNode("rss").SelectSingleNode("channel");
            XmlNodeList nodes = wData.SelectNodes("/rss/channel/item/yweather:forecast", manager);

            Temperature = channel.SelectSingleNode("item").SelectSingleNode("yweather:condition", manager).Attributes["temp"].Value;

            Condition = channel.SelectSingleNode("item").SelectSingleNode("yweather:condition", manager).Attributes["text"].Value;

            Humidity = channel.SelectSingleNode("yweather:atmosphere", manager).Attributes["humidity"].Value;

            WindSpeed = channel.SelectSingleNode("yweather:wind", manager).Attributes["speed"].Value;

            Town = channel.SelectSingleNode("yweather:location", manager).Attributes["city"].Value;

            TFCond = channel.SelectSingleNode("item").SelectSingleNode("yweather:forecast", manager).Attributes["text"].Value;

            TFHigh = channel.SelectSingleNode("item").SelectSingleNode("yweather:forecast", manager).Attributes["high"].Value;

            TFLow = channel.SelectSingleNode("item").SelectSingleNode("yweather:forecast", manager).Attributes["low"].Value; 
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.AppendText(Temperature);
            textBox2.AppendText(Humidity);
        }

    }
}

gui如下...

在此处输入图像描述

我需要善良的程序员的帮助。

4

1 回答 1

4

您定义了变量温度和湿度,但您从未分配它们,因此它们实际上只是空值。您需要使用 GetWeather() 方法。您刚刚定义了此方法,但从未使用过它,因此您的 Temperatura 和 Humidity 变量仍然为空。

在您的 EventHandler 中单击按钮,您需要使用 GetWeather 方法。

private void button1_Click(object sender, EventArgs e)
    {
        GetWeather();
        textBox1.AppendText(Temperature);
        textBox2.AppendText(Humidity);
    }
于 2014-12-14T20:57:14.010 回答