Die ECB stellt täglich die aktuellen Wechselkurse zum Euro in einer XML-Datei bereit. Die folgenden zwei Funktionen habe ich geschrieben, um diese Daten in einem 2-dimensionalen Feld bereit zu stellen. Imports System.Xml ' Internet-Adresse Public ECPXMLAddress As String = _ "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml" ' Auslesen der Wechselkurse der ECB aus XML-File Public Function getECBCurrencyExchanges(ByVal WebAddress As String) As Array Dim xmlReader As XmlTextReader Dim outArray(1, 1) As String Dim currStr As String = Nothing Dim currVstr As String = Nothing Dim j As Short ' Lesen der Daten vom XML-file xmlReader = New XmlTextReader(WebAddress) With xmlReader While .Read() If .Name <> "" Then ' Prüfen, ob da ein Node gesmes:name ist If .Name = "gesmes:name" Then currStr = .ReadString() For i As Integer = 0 To .AttributeCount - 1 ' Prüfen, ob da ein Node Cube ist If .Name = "Cube" Then ' Prüfen, ob ein Attribut, dann Wert lesen If .AttributeCount = 1 Then .MoveToAttribute("time") currVstr = DateTime.Parse(.Value).ToShortDateString End If ' Prüfen, ob zwei Attribute, dann Wechselkurs lesen If .AttributeCount = 2 Then currStr = "" : currVstr = "" .MoveToAttribute("currency") ' Ergänzen der Währungsbezeichnung currStr = CurrencyName(.Value) .MoveToAttribute("rate") currVstr = .Value End If End If If i Mod 2 = 0 Then If currStr IsNot Nothing Then outArray(0, j) = currStr outArray(1, j) = currVstr j += 1 ReDim Preserve outArray(1, j) End If End If .MoveToNextAttribute() Next i End If End While End With ReDim Preserve outArray(1, outArray.Length / 2 - 2) Return outArray End Function Public Function CurrencyName(ByVal shortName As String) As String Dim returnText As String = Nothing Select Case shortName Case "DKK" : returnText = "Dänemark;Danish Krone" Case "EUR" : returnText = "EU;Euro" Case "USD" : returnText = "USA;US Dollar" Case "GBP" : returnText = "Großbritannien;Pound Sterling" Case "SEK" : returnText = "Schweden;Swedish Krona" Case "NOK" : returnText = "Norwegen;Norwegian Krona" Case "CNY" : returnText = "China;Chinese Yuan Renminbi" Case "ISK" : returnText = "Island;Icelandic Krona" Case "IDR" : returnText = "Indonesien;Indonesian Rupiah" Case "CHF" : returnText = "Schweiz;Swiss franc" Case "CAD" : returnText = "Kanada;Canadian Dollar" Case "JPY" : returnText = "Japan;Japanese Yen" Case "RUB" : returnText = "Russland;Russian Rouble" Case "HRK" : returnText = "Kroatien;Croatian Kuna" Case "MYR" : returnText = "Malaysia;Malaysian Ringgit" Case "PHP" : returnText = "Philippinen;Philippine Peso" Case "THB" : returnText = "Thailand;Thai Baht" Case "AUD" : returnText = "Australien;Australian Dollar" Case "NZD" : returnText = "Neuseeland;New Zealand Dollar" Case "EEK" : returnText = "Estland;Estonian Kroon" Case "LVL" : returnText = "Lettland;Latvian Lats" Case "LTL" : returnText = "Litauen;Lithuanian Litas" Case "PLN" : returnText = "Polen;Polish Zloty" Case "CZK" : returnText = "Tschechien;Czech Koruna" Case "HUF" : returnText = "Ungarn;Hungarian Forint" Case "HKD" : returnText = "Hongkong;Hong Kong Dollar" Case "SGD" : returnText = "Singapur;Singapore Dollar" Case "SDR" : returnText = "Spezial;Special Drawing Rights" Case "BGN" : returnText = "Bulgarien;Bulgarian Lev" Case "CYP" : returnText = "Zypern;Cypriotic Pund" Case "MTL" : returnText = "Malta;Maltesic Lira" Case "ROL" : returnText = "Rumänien;Romanian Leu" Case "SIT" : returnText = "Slowenien;Slovenscy Tolar" Case "SKK" : returnText = "Slowakei;Slovakic Koruna" Case "TRY" : returnText = "Türkei;Turkish Lira" Case "KRW" : returnText = "Südkorea;South Korean Won" Case "ZAR" : returnText = "Südafrika;South African Rand" Case "BRL" : returnText = "Brasilien;Brasilian Real" Case "IDR" : returnText = "Indonesien;Indonesian Rupiah" Case "INR" : returnText = "Indien;Indian Rupee" Case "MXN" : returnText = "Mexiko;Mexican Peso" End Select If returnText IsNot Nothing Then returnText += ";" + shortName Return returnText End Function Beim Verwenden des Feldes muss man nur beachten, dass das Element (0,0) den Namen der Bank und das Element (1,0) das aktuelle Datum enthalten. Viel Erfolg beim Bauen eines Währungsrechners! Erweierung von Snoopy (24.09.09) Imports System.Globalization ' ECB Struktur Public Structure ECBType Public ECBCurrency As String Public ECBRate As String Public DisplayName As String End Structure Public Class ECBExchanges Public Function getECBCurrencyExchanges(ByVal WebAddress As String) _ As List(Of ECBType) Try Dim xr As XElement = XElement.Load(WebAddress) Dim xn As XNamespace = xr.Attribute("xmlns").Value Dim xECBs = From ECB In xr.Descendants(xn + "Cube") _ Where ECB.Attribute("currency") IsNot Nothing _ AndAlso ECB.Attribute("rate") IsNot Nothing _ Select New ECBType With { _ .ECBCurrency = ECB.Attribute("currency").Value, _ .ECBRate = ECB.Attribute("rate").Value, _ .DisplayName = CurrencyName(.ECBCurrency)} Return xECBs.ToList Catch ex As Exception Throw ex End Try End Function Private Function CurrencyName(ByVal isoCode As String) As String Dim cultures As CultureInfo() = CultureInfo.GetCultures( _ CultureTypes.SpecificCultures) For Each ci As CultureInfo In cultures Dim ri As New RegionInfo(ci.LCID) If ri.ISOCurrencySymbol = isoCode Then Return ci.DisplayName End If Next Return String.Empty End Function End Class Nachfolgender Aufruf gibt dann eine List(Of ECBType) zurück: Private MyECB As New ECBExchanges Dim ECBList As List(Of ECBType) = MyECB.getECBCurrencyExchanges( _ "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml") Dieser Tipp wurde bereits 20.290 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |