1

私の意図は、yahoo weather api から気象データを取得する C# フォーム アプリケーションを開発することです。yahoo から気象データを取得し、それぞれのテキスト入力で取得するプログラムが必要です。コードは次のとおりです。

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);
        }

    }
}

グイは次のとおりです...

ここに画像の説明を入力

親切なプログラマーの助けが必要です。

4

1 に答える 1

4

変数 Temperature nad Humidity を定義しましたが、それらを割り当てることはないため、実際には単なる null です。GetWeather() メソッドを使用する必要があります。このメソッドを定義したばかりですが、使用したことがないため、Temperatura 変数と Humidity 変数はまだ null です。

ボタンクリックの EventHandler で GetWeather メソッドを使用する必要があります。

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