Asp.Net (C#) kullanarak Merkez Bankasından Döviz kurlarını çeken bir program yapalım. C# ta xml veriyi çekmek gerçekten çok kolay yalnızca 3 satırlık bir kod işimizi görecektir. Öncelikle Web Formumuza bir adet grdDoviz isimli GridView ekleyelim. Daha sonra sayfamızın cs ‘ine gidip aşağıdaki kodları yazalım.

protected void Page_Load(object sender, EventArgs e)
{
string xmlDosya =”http://www.tcmb.gov.tr/kurlar/today.xml”
DataSet xmlVeri = XmlVerileriGetir(xmlDosya);

grdDoviz.DataSource=xmlVeri;
grdDoviz.DataBind();
}

private DataSet XmlVerileriGetir(string xmlDosya)
{
DataSet ds = new DataSet();
// xlm Dosya varmı onun kontrolü.
if (File.Exists(MapPath(xmlDosya)))
{
// varsa Dosyayı oku ve dataset ‘ e aktar.
ds.ReadXml(MapPath(xmlDosya));
}
return ds;
}

iş bu kadar basit. Bunu geliştirmek size kalmış. Dosyadan alığınız verileri ne şekilde kullanacağınızı siz berlirleyin. 3 satır kod dedin etti 10 satır diceksiniz ama bu kodu kısatlmak da sizin elinizde.

 

@editdate  12.08.2013 : Sanırım farklı bir server üzerindeki xml dosyayı okumada problemler çıkıyormuş. O yüzden kodlarda düzenleme yaparak aşağıdaki gibi bir kodlama ile Merkez bankasından döviz kurlarını çekebilirsiniz.

protected void Page_Load(object sender, EventArgs e)
{
string xmlDosya = “http://www.tcmb.gov.tr/kurlar/today.xml”;
DataSet xmlVeri = XmlVerileriGetir(xmlDosya);

grdDoviz.DataSource=xmlVeri;
grdDoviz.DataBind();
}

private DataSet XmlVerileriGetir(string xmlDosya)
{
// Return edilecek tablo.
DataTable dt = new DataTable(“Doviz”);
dt.Columns.Add(“Tarih”);
dt.Columns.Add(“Kod”);
dt.Columns.Add(“Isim”);
dt.Columns.Add(“Alis”);
dt.Columns.Add(“Satis”);

// XML dokumanı çekiyoruz.
XDocument TCMB = XDocument.Load(xmlDosya);

if (TCMB != null) // XML dosya varmı kontrolü.
{
// Linq ile gelen xml veri üzerinde select çekiyoruz.
var Kur = (from p in TCMB.Element(“Tarih_Date”).Elements(“Currency”)
select new
{
tarih = (string)TCMB.Element(“Tarih_Date”).Attribute(“Tarih”),
kod = (string)p.Attribute(“Kod”),
isim = (string)p.Element(“Isim”),
alis = (string)p.Element(“ForexBuying”),
satis = (string)p.Element(“ForexSelling”),
});

// Select sonucunda dönen tabloyu DataTable’ ye aktarma.
if (Kur.AsEnumerable().Count() > 0)
{
DataRow row;
foreach (var item in Kur)
{
row = dt.NewRow();
row[“Tarih”] = item.tarih;
row[“Kod”] = item.kod;
row[“Isim”] = item.isim;
row[“Alis”] = item.alis;
row[“Satis”] = item.satis;
dt.Rows.Add(row);
}
}
}

// DataTable’ yi DataSet’ e aktarıp Return Et:
DataSet ds = new DataSet();
ds.Tables.Add(dt);
return ds;
}

Bu kodlar biraz daha anlasılır olmuştur sanırım.