Emre Yüz


Visual C# XML ile Hava Durumu Bilgisi Çekme

Visual C# ile XML yapısını kullanarak openweathermap web servisi üzerinden güncel hava durumu bilgisini çekerek programımızda kullanmayı öğreniyoruz.

Visual C# XML ile Hava Durumu Bilgisi Çekme

By Emre YÜZ
11.02.2017 18.35



visual c# xml kullanımı hava durumu bilgisi

Bugün bir çalışmam için hava durumu bilgisi kullanmam gerekti güncel ve ücretsiz bir servis bulmam zaman aldı yerli bir kaynak bulamadım. Openweathermap adresinde ücretsiz bir API buldum. Buradan kendinize bir hesap oluşturarak API anahtarınızı alabilirsiniz. Ortalama iki saatte bir güncelleniyor veriler oldukça kullanışlı.

Videoyu izlemek için: https://youtu.be/DMyErgbl4qs

Hava durumu iconlarını indirmek için: https://vclouds.deviantart.com/art/VClouds-Weather-Icons-179152045

1. Adım

Öncelikle şu adresden üye olarak kendimize özel API anahtarı alıyoruz. Bu anahtar veri çekmek için bize gerekiyor aksi takdirde sunucu sorgularımıza cevap vermeyecektir.

2. Adım

API anahtarını api değişkenine giriyoruz. Ve baglanti sorgusundaki q=Turkey,Aydin kısmını bulunduğunuz yere göre değiştiriyorsunuz.

private const string api = "API ANAHTARI";
private const string baglanti = "http://api.openweathermap.org/data/2.5/weather?q=Turkey,Aydin&mode=xml&units=metric&APPID=" + api;

API servisinin döndürdüğü XML sonucu aşağıdaki gibi bu linkden detaylara bakabilirsiniz. XML sonucundan gelen verileri Xdocument ile basitce ayıklayarak bize lazım olan verileri kullanacağız.

3. Adım

XDocument hava = XDocument.Load(baglanti);
var sicaklik = hava.Descendants("temperature").ElementAt(0).Attribute("value").Value;
label_derece.Text = sicaklik.ToString()+"°";

Yukarıda ilk satırda baglantimizi kullanarak verileri çekiyoruz. İkinci satırda ise kollara ayrılmış verilere ulaşıyoruz. Üçüncü satırdaysa veriyi labele yazdırıyoruz.

4. Adım

Bu adımda hava durumuna göre programımızda bir resim göstereceğiz. Bunun için öncelikle havanın ne durumda olduğunu clouds verisinden alalım.

var durum = hava.Descendants("clouds").ElementAt(0).Attribute("name").Value;
label_durum.Text = durum.ToString();
if (durum.Contains("clouds") == true)
{
     picture_bulutlu.Visible = true;
}
else if(durum.Contains("sun") == true)
{
    picture_bulutlu.Visible = false;
    picture_gunesli.Visible = true;
}

 

Yukarıda if koşulunda durum sonucu bulut içeriyorsa bulutlu güneş içeriyorsa güneşli pictureboxı gösteriyoruz.



Emre Yüz
Emre YÜZ
Multidisipliner Full-Stack Web Geliştirici/Tasarımcı, Veri
Mimarı ve Analist.

Multidisipliner Full-Stack Web Geliştirici/Tasarımcı, Veri Mimarı ve Analist.



HAKKIMDA

Emre YÜZ

Multidisipliner Full-Stack Web Geliştirici/Tasarımcı, Veri Mimarı ve Analist.

Son Yazılar

insta ❤️ feed

  • @yuzemre
  • @yuzemre
  • @yuzemre
  • @yuzemre
  • @yuzemre
  • @yuzemre

Reklam