Merhaba, C# İnternetten Döviz Kurlarını Çekmek – XML dersi ile C# eğitim setime devam ediyorum. Bu dersimizde TCMB’nin sitesinden yayınlanan döviz kurlarını nasıl çekeceğimize bakacağız. Basit ve kısa bir konu olduğundan kısa bir yazı olacak.
C# İnternetten Döviz Kurlarını Çekmek – XML
Türkiye’de döviz kurlarının en doğru şekilde çekilmesi için TCMB yani Türkiye Cumhuriyeti Merkez Bankası‘nın hizmetini kullanacağız. TCMB, geliştirilen projeler tarafından okunabilmesi için XML olarak yayınlıyor. Bizde bu XML verilerini kullanarak döviz kurlarını okuyabiliyoruz.
Döviz kurlarını okuyacağımız bağlantı https://www.tcmb.gov.tr/kurlar/today.xml urlsidir. Buraya girdiğinizde karşınıza bir tablo çıkar. Bu sayfa üzerinde sağ tıklayıp kaynağı göster dediğinizde tablonun XML formatına ulaşıyorsunuz.
Bize de bu kaynaktaki kodlar gerekiyor.
C# İnternetten Döviz Kurlarını Çekmek – XML
Projemize başlamadan önce gerekli namespaceleri ekleyelim.
using System.Xml;
Şimdi formumuza 10 tane label ve bir button ekleyelim.
Button nesnemizi click eventine gelelim kodlarımızı yazalım.
const string bugun = "https://www.tcmb.gov.tr/kurlar/today.xml"; private void btn_yenile_Click(object sender, EventArgs e) { var cxml = new XmlDocument(); cxml.Load(bugun); DateTime dt = Convert.ToDateTime(cxml.SelectSingleNode("//Tarih_Date").Attributes["Tarih"].Value); lbl_tarih.Text = dt.ToString(); string usd_satis = cxml.SelectSingleNode("Tarih_Date/Currency [@Kod = 'USD']/BanknoteSelling").InnerXml; string usd_alis = cxml.SelectSingleNode("Tarih_Date/Currency [@Kod = 'USD']/BanknoteBuying").InnerXml; lbl_usd_sa.Text = usd_satis; lbl_usd_al.Text = usd_alis; string eur_satis = cxml.SelectSingleNode("Tarih_Date/Currency [@Kod = 'EUR']/BanknoteSelling").InnerXml; string eur_alis = cxml.SelectSingleNode("Tarih_Date/Currency [@Kod = 'EUR']/BanknoteBuying").InnerXml; lbl_eur_sa.Text = eur_satis; lbl_eur_al.Text = eur_alis; }
Kodları açıklamak gerekirse;
- URL sabit olacağından bugun değişkenini Const olarak tanımladık. Const olarak tanımlanan değişkenler program içerisinde değiştirilemezler. Bkz. Const Kavramı
- Bir XMLDocument tanımladık ve url’deki XML ‘i yükledik.
- XMLDoc sınıfının SelectSingleNode sınıfını kullanarak yüklediğimiz XML Document içindeki tarih bilgisini alıyoruz.
- Diğer tüm Node’ler de Tarih_Date node’u içinde olduğundan dolayı Currency Node’sine de TarihDate üzerinden ulaşabiliyoruz.
- Burada bir çok Currency olduğu ve bize özellikle bir kaç tanesi gerekli olduğundan dolayı Currency’nin Kod özelliğine bakarak verileri çekiyoruz.
- Kodu USD olan Curreny bloğununda içindeki BanknoteSelling ve BanknoteBuying yani satış ve alış değerlerini okuyoruz.
Aşağıdaki görselde işaretlenmiş alanlardaki bilgileri kullanıyoruz.
Yukarıdaki kodlar ile bağlantıdaki tüm dövizlerin kurlarını çekebilir ve işlemler yapabilirsiniz. Bu işlemleri elbette web projelerinizde de yapabilirsiniz. Sonuçta bu XML okuma işlemleri sadece C# ‘a özel bir konu değildir. Diğer programlama dillerinde de bu işlemleri yapabilirsiniz.
C# İnternetten Döviz Kurlarını Çekmek – XML yazımda bu kadar arkadaşlar.
Bana destek olmak isterseniz, iletişim sayfamda verdiğim sosyal medya hesaplarımı takip edebilirsiniz.
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız. Derslerime özel olarak hazırladığım Github Projeme bu bağlantıdan ulaşabilirsiniz… Bu ders için hazırlanan projeyi Drive üzerine yükledim. Projeye buraya tıklayarak ulaşabilirsiniz. Github’a yüklemek isterdim ama böyle ufak tefek şeyleri yükleyerek orayı çöplük yapmak istemiyorum. :D
Bu yazı, sitemdeki 432. yazıdır…
Sağlıcakla ve takipte kalın. ;)
System.Xml.XmlNode.SelectSingleNode(…), null döndürdü.
hatası veriyor. Ne yapmalıyım
Merhaba,
Bilemiyorum. TCMB sitesindeki node adı değişmiş olabilir. Normalde yıllardır sorunsuz çalışan kodlardır bunlar.