C# с API погоды Yahoo
Мое намерение состоит в том, чтобы разработать приложение формы C#, которое получает данные о погоде из API погоды Yahoo. Мне нужна программа для получения данных о погоде от 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);
}
}
}
GUI выглядит следующим образом...
Мне нужна помощь добрых программистов.
1 ответ
Решение
Вы определили переменные Температура и влажность, но вы никогда не назначаете их, так что они на самом деле просто нулевые. Вам нужно использовать метод GetWeather(). Вы только что определили этот метод, но никогда не использовали его, поэтому ваши переменные Temperatura и Humidity по-прежнему равны нулю.
В вашем EventHandler для нажатия кнопки Вам необходимо использовать метод GetWeather.
private void button1_Click(object sender, EventArgs e)
{
GetWeather();
textBox1.AppendText(Temperature);
textBox2.AppendText(Humidity);
}