C# ve XML ile merkez bankası güncel döviz kurlarını çekme

C# ve XML ile merkez bankası güncel döviz kurlarını çekme
6 Nisan 2015C#

Merhabalar. Hepimizin malumu günümüzde bir çok yazılım dinamik değerler ile çalışıyor ve bunların en önemlilerinden biri de uluslararası kurlar. Bir çok gelir ve gider farklı para birimleriyle giriş yapıyor hayatımıza. Bu yüzden büyük farklılıklar yaşamamak için güncel olarak kurları sistemimize çekebilmemiz gerekmekte. Bunu da bize sağlayan TCMB internet sitesi bu adresten sürekli olarak son iş günü verilerini yayınlamaktadır.
Bu verileri merkez bankasından alabilmek için xml sayfamızın içeriğini güzelce ayrıştırıp istediğimiz değeri elde etmek gerekir. TCMB nin sağladığı xml sayfasına girip sayfa kayağını görüntülediğinizde bazı değişkenler ile karşılaşacaksınız. Bunlardan ilki 
 

<?xml version="1.0" encoding="ISO-8859-9"?>
<?xml-stylesheet type="text/xsl" href="isokur.xsl"?>
<Tarih_Date Tarih="03.04.2015" Date="04/03/2015" Bulten_No="2015/66">

şeklinde görüldüğü gibi sayfanın açılışını ve niteliğini belirten tag'ler , diğeri de her satır için ayrı ayrı oluşturulan tag'ler dir.
 

<Currency CrossOrder="0" Kod="USD" CurrencyCode="USD">
<Unit>1</Unit>
<Isim>ABD DOLARI</Isim>
<CurrencyName>US DOLLAR</CurrencyName>
<ForexBuying>2.5905</ForexBuying>
<ForexSelling>2.5952</ForexSelling>
<BanknoteBuying>2.5887</BanknoteBuying>
<BanknoteSelling>2.5991</BanknoteSelling>
<CrossRateUSD>1</CrossRateUSD>
<CrossRateOther></CrossRateOther>
</Currency>

Burada Currency etiketi ile bize her satırın açılış ve kapanış etiketleri gösteriliyor bu sayede biz değişken olarak buralardan verileri alabiliyoruz. Şimdi C# kısmından kod yazımına gelirsek eğer. Öncelikle <Tarih_Date Tarih="03.04.2015" Date="04/03/2015" kısmından biz tarih değişkenini almaya çalışalım.

using System.Xml; // bu kısmı en üste referansların arasına yazmamız gerekmekte.
string today="http://www.tcmb.gov.tr/kurlar/today.xml";
var xmlDoc=new XmlDocument();
xmlDoc.Load(today);
DateTime exchangeDate = Convert.ToDateTime(xmlDoc.SelectSingleNode("//Tarih_Date").Attributes["Tarih"].Value);

Bu kod ile today.xml sayfasından (bugünün kurlarının) yayınlandığı tarih değerini almış olduk. Şimdi USD forex alış değerini almayak için gereken kodu yazarak o günkü dolar değerini bir string değişkenine atalım.
 

string USD = xmlDoc.SelectSingleNode("Tarih_Date/Currency[@Kod='USD']/ForexBuying").InnerXml;

Bu kod ile Tarih_Date dizininin Currency etiketini bulup bunun içinden Kod etiketi USD olan satırda bulunan ForexBuying etiketindeki değeri getirmesini istedik. Bu kodun çıktısı 2.5905 olarak geldi yani merkez bankasındaki değeri string'e atmış olduk. USD yerine o xml de bulunan hangi satırı yazarsanız o değeri elde edersiniz. EURO nun direkt olarak türk lirasına karşılığı bulunmuyor. Bu veriyi almak için çapraz kur ile dolar karşısındaki değerini almamız gerekiyor euronun. aşağıdaki kod ile euronun dolar karşısındaki değerini de bir stringe atabiliriz.
 

string EURO = xmlDoc.SelectSingleNode("Tarih_Date/Currency[@Kod='EUR']/CrossRateOther").InnerXml;

Burada bir önceki USD kodumuzdan tek farkın son etiketin ForexBuying yerine CrossRateOther olması olduğunu görüyoruz. buradan elde ettiğmiz Euro değişkenini USD ile double formatında çarparsak EURO - TL paritesini de hesaplayabiliriz.

4572 Görüntülenme sayısı

BİR YORUM YAZIN

Bilgileriniz Güvende!E-Posta adresiniz ve diğer bilgileriniz kimseyle paylaşılmayacaktır.