PDA

Tam Sürümünü Görmek İçin : asp.net & XML


memphiswoo
29/11/2007, 14:34
Merhaba Arkadaslar :
Aşağıdaki kod bloğuyla Merkez Bankası' ndan dolar ve euro kurlarını çekmeye çalışıyorum, ancak sonuç vermiyor. Label doldurulmuyor. Ben kodlardaki sıkıntıyı bulamadım. Sizler de bakarsanız cok sevinirim. Şimdiden çok teşekkür ederim. Kolay gelsin.

Imports System.xml
Partial Class _Default
Inherits System.Web.UI.Page

Private dolarAlis As String
Private dolarSatis As String
Private euroAlis As String
Private euroSatis As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

Dim rdr As New XmlTextReader("http://www.tcmb.gov.tr/kurlar/today.xml")
Dim myxml As New XmlDocument()
myxml.Load(rdr)
Dim kod As XmlNodeList = myxml.SelectNodes("/Tarih_Date/Currency/@Kod")
Dim doviz_alis As XmlNodeList = myxml.SelectNodes("/Tarih_Date/Currency/ForexBuying")
Dim doviz_satis As XmlNodeList = myxml.SelectNodes("/Tarih_Date/Currency/ForexSelling")
For i As Integer = 0 To kod.Count - 1
If kod.Item(i).Value = "USD" Then
dolarAlis = doviz_alis.Item(i).InnerText.ToString()
dolarSatis = doviz_satis.Item(i).InnerText.ToString()
ElseIf kod.Item(i).Value = "EUR" Then
euroAlis = doviz_alis.Item(i).InnerText.ToString()
euroSatis = doviz_satis.Item(i).InnerText.ToString()
End If
Next
Label1.Text = "<table border='0' width='180' align='center' cellpadding='2' cellspacing='0' ><tr bgcolor='#8B8B8B'style='color:#FFFFFF'> <td colspan='3' align='center'<strong>Merkez Bankası<br>Döviz Kurları</strong></td></tr><tr bgcolor='#FFFFFF'style='color:#284775'><td></td><td>Alış</td><td>Satış</td></tr><tr bgcolor='#F7F6F3'style='color:#333333'><td><b>USD</b></td><td>" + dolarAlis + "</td><td>" + dolarSatis + "</td></tr><tr><td><b>EUR</b></td><td>" + euroAlis + "</td><td>" + euroSatis + "</td></tr></table>"
End Sub

End Class


writeLine
29/11/2007, 15:16
Senin kodlarını bir class şeklinde tanımladım ve hemen hemen seninle aynı şeyleri yaptım ve denedim çalışıyor. Bu güzel bir kaynak olacak benim için. Kodları gönderiyorum.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Xml;


public class Exchange
{
private XmlDocument _xmlDocument;

private XmlDocument xmlDocument
{
get
{
if (_xmlDocument == null)
_xmlDocument = new XmlDocument();

return _xmlDocument;
}
}

public Exchange(string xmlUrl)
{
XmlTextReader xmlreader = new XmlTextReader(xmlUrl);

try
{
xmlDocument.Load(xmlreader);
}
catch (Exception e)
{
throw new Exception("Kurlar kaynağından alınırken hata oluştu. Hata Mesajı: " + e.Message);
}
}

public string KurGetir(string dovizAdi)
{
XmlNodeList dovizKodListe = xmlDocument.SelectNodes("/Tarih_Date/Currency/@Kod");
XmlNodeList dovizAlisListe = xmlDocument.SelectNodes("/Tarih_Date/Currency/ForexBuying");
XmlNodeList dovizSatisListe = xmlDocument.SelectNodes("/Tarih_Date/Currency/ForexSelling");

string dovizAlis = "";
string dovizSatis = "";

for (int i = 0; i <= dovizKodListe.Count - 1; i++)
{
if (dovizKodListe[i].Value == dovizAdi)
{
dovizAlis = dovizAlisListe[i].InnerText;
dovizSatis = dovizSatisListe[i].InnerText;
break;
}
}

return dovizAlis + "-" + dovizSatis;
}
}



Kullanımı:

Exchange ex = new Exchange("http://www.tcmb.gov.tr/kurlar/today.xml");
Response.Write(ex.KurGetir("USD"));


Çıktısı:

1.2028-1.2086

memphiswoo
30/11/2007, 11:39
Üstadım class şeklinde denediğimde bende de çalıştı. Ancak diğer şekilde hala neden çalışmadığını anlayabilmiş değilim. Görünürde bir hata yok çünkü. En azından benim görebildiğim. Bu arada class'ın vb.net hali de aşağıdaki şekilde. Yok mu bunun vb'si diyen kesin çıkar çünkü :

Imports System
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Xml


Public Class Exchange
Private _xmlDocument As XmlDocument

Private ReadOnly Property xmlDocument() As XmlDocument
Get
If _xmlDocument Is Nothing Then
_xmlDocument = New XmlDocument()
End If

Return _xmlDocument
End Get
End Property

Public Sub New(ByVal xmlUrl As String)
Dim xmlreader As New XmlTextReader(xmlUrl)

Try
xmlDocument.Load(xmlreader)
Catch e As Exception
Throw New Exception("Kurlar kaynağından alınırken hata oluştu. Hata Mesajı: " + e.Message)
End Try
End Sub

Public Function KurGetir(ByVal dovizAdi As String) As String
Dim dovizKodListe As XmlNodeList = xmlDocument.SelectNodes("/Tarih_Date/Currency/@Kod")
Dim dovizAlisListe As XmlNodeList = xmlDocument.SelectNodes("/Tarih_Date/Currency/ForexBuying")
Dim dovizSatisListe As XmlNodeList = xmlDocument.SelectNodes("/Tarih_Date/Currency/ForexSelling")

Dim dovizAlis As String = ""
Dim dovizSatis As String = ""
For i As Integer = 0 To dovizKodListe.Count - 1

If dovizKodListe(i).Value = dovizAdi Then
dovizAlis = dovizAlisListe(i).InnerText
dovizSatis = dovizSatisListe(i).InnerText
Exit For
End If
Next

Return dovizAdi + " ALIS : " + dovizAlis + " VE " + dovizAdi + " SATIS : " + dovizSatis
End Function
End Class

writeLine
30/11/2007, 14:10
Eline sağlık güzel bir çalışma olmuş. İsteyen tepe tepe kullansın.