Hier im Forum gab es ja schon das Beispiel wie man die Währungskurse bei der EZB abfragen kann.
Das habe ich genommen und muss das nun erweitern, dass ich in der Liste die Kurse der letzten 90 Tage habe.
Hierzu gibt es folgende Klasse:
Der Aufruf mit der WebAdresse findet dann so statt:
Die xml der EZB sieht wie folgt aus:
Spoiler anzeigen
Leider schlägt das ganze mit einem Objektverweis fehl und weiss nicht warum.
Das habe ich genommen und muss das nun erweitern, dass ich in der Liste die Kurse der letzten 90 Tage habe.
Hierzu gibt es folgende Klasse:
VB.NET-Quellcode
- Imports System.Globalization
- ' ECB Struktur
- Public Structure ECBType
- Public ECBCurrency As String
- Public ECBRate As String
- Public DisplayName As String
- Public ECBDate As Date
- End Structure
- Public Class ECBExchanges
- Public Function getECBCurrencyExchanges90(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 k1 In xr.Descendants(xn + "Cube")
- From k2 In k1.Elements()
- Select New ECBType With {
- .ECBCurrency = k2.Attribute("currency").Value,
- .ECBRate = k2.Attribute("rate").Value,
- .DisplayName = CurrencyName(.ECBCurrency),
- .ECBDate = DateTime.Parse(k1.Attribute("time").Value)}
- 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
Der Aufruf mit der WebAdresse findet dann so statt:
Die xml der EZB sieht wie folgt aus:
XML-Quellcode
- <gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
- <gesmes:subject>Reference rates</gesmes:subject>
- <gesmes:Sender>
- <gesmes:name>European Central Bank</gesmes:name>
- </gesmes:Sender>
- <Cube>
- <Cube time="2013-07-17">
- <Cube currency="USD" rate="1.3136"/>
- <Cube currency="JPY" rate="131.15"/>
- <Cube currency="BGN" rate="1.9558"/>
- <Cube currency="CZK" rate="25.968"/>
- <Cube currency="DKK" rate="7.4573"/>
- <Cube currency="GBP" rate="0.86315"/>
- <Cube currency="HUF" rate="293.85"/>
- <Cube currency="LTL" rate="3.4528"/>
- <Cube currency="LVL" rate="0.7025"/>
- <Cube currency="PLN" rate="4.261"/>
- <Cube currency="RON" rate="4.4457"/>
- <Cube currency="SEK" rate="8.6295"/>
- <Cube currency="CHF" rate="1.234"/>
- <Cube currency="NOK" rate="7.8775"/>
- <Cube currency="HRK" rate="7.516"/>
- <Cube currency="RUB" rate="42.628"/>
- <Cube currency="TRY" rate="2.5299"/>
- <Cube currency="AUD" rate="1.4273"/>
- <Cube currency="BRL" rate="2.9669"/>
- <Cube currency="CAD" rate="1.3656"/>
- <Cube currency="CNY" rate="8.0595"/>
- <Cube currency="HKD" rate="10.1903"/>
- <Cube currency="IDR" rate="13192.75"/>
- <Cube currency="ILS" rate="4.6913"/>
- <Cube currency="INR" rate="78.113"/>
- <Cube currency="KRW" rate="1469.11"/>
- <Cube currency="MXN" rate="16.6105"/>
- <Cube currency="MYR" rate="4.1924"/>
- <Cube currency="NZD" rate="1.6725"/>
- <Cube currency="PHP" rate="56.954"/>
- <Cube currency="SGD" rate="1.6599"/>
- <Cube currency="THB" rate="40.84"/>
- <Cube currency="ZAR" rate="13.0168"/>
- </Cube>
- <Cube time="2013-07-16">
- <Cube currency="USD" rate="1.3118"/>
- <Cube currency="JPY" rate="130.35"/>
- <Cube currency="BGN" rate="1.9558"/>
- <Cube currency="CZK" rate="25.96"/>
- <Cube currency="DKK" rate="7.4571"/>
- <Cube currency="GBP" rate="0.8693"/>
- <Cube currency="HUF" rate="292.6"/>
- <Cube currency="LTL" rate="3.4528"/>
- <Cube currency="LVL" rate="0.7025"/>
- <Cube currency="PLN" rate="4.256"/>
- <Cube currency="RON" rate="4.436"/>
- <Cube currency="SEK" rate="8.6974"/>
- <Cube currency="CHF" rate="1.2371"/>
- <Cube currency="NOK" rate="7.8935"/>
- <Cube currency="HRK" rate="7.5235"/>
- <Cube currency="RUB" rate="42.5644"/>
- <Cube currency="TRY" rate="2.5231"/>
- <Cube currency="AUD" rate="1.4225"/>
- <Cube currency="BRL" rate="2.9022"/>
- <Cube currency="CAD" rate="1.3657"/>
- <Cube currency="CNY" rate="8.0479"/>
- <Cube currency="HKD" rate="10.1767"/>
- <Cube currency="IDR" rate="13278.42"/>
- <Cube currency="ILS" rate="4.6784"/>
- <Cube currency="INR" rate="77.586"/>
- <Cube currency="KRW" rate="1466.21"/>
- <Cube currency="MXN" rate="16.5372"/>
- <Cube currency="MYR" rate="4.1672"/>
- <Cube currency="NZD" rate="1.667"/>
- <Cube currency="PHP" rate="56.69"/>
- <Cube currency="SGD" rate="1.6517"/>
- <Cube currency="THB" rate="40.731"/>
- <Cube currency="ZAR" rate="12.8506"/>
- </Cube>
- <Cube time="2013-07-15">
- <Cube currency="USD" rate="1.3012"/>
- <Cube currency="JPY" rate="130.68"/>
- <Cube currency="BGN" rate="1.9558"/>
- <Cube currency="CZK" rate="26.01"/>
- <Cube currency="DKK" rate="7.4576"/>
- <Cube currency="GBP" rate="0.8647"/>
- <Cube currency="HUF" rate="292.01"/>
- <Cube currency="LTL" rate="3.4528"/>
- <Cube currency="LVL" rate="0.7026"/>
- <Cube currency="PLN" rate="4.2855"/>
- <Cube currency="RON" rate="4.4236"/>
- <Cube currency="SEK" rate="8.7359"/>
- <Cube currency="CHF" rate="1.2394"/>
- <Cube currency="NOK" rate="7.931"/>
- <Cube currency="HRK" rate="7.5315"/>
- <Cube currency="RUB" rate="42.544"/>
- <Cube currency="TRY" rate="2.5303"/>
- <Cube currency="AUD" rate="1.438"/>
- <Cube currency="BRL" rate="2.9516"/>
- <Cube currency="CAD" rate="1.3568"/>
- <Cube currency="CNY" rate="7.9865"/>
- <Cube currency="HKD" rate="10.095"/>
- <Cube currency="IDR" rate="13034.32"/>
- <Cube currency="ILS" rate="4.6835"/>
- <Cube currency="INR" rate="77.935"/>
- <Cube currency="KRW" rate="1461.48"/>
- <Cube currency="MXN" rate="16.6489"/>
- <Cube currency="MYR" rate="4.1513"/>
- <Cube currency="NZD" rate="1.6803"/>
- <Cube currency="PHP" rate="56.495"/>
- <Cube currency="SGD" rate="1.6491"/>
- <Cube currency="THB" rate="40.571"/>
- <Cube currency="ZAR" rate="12.9362"/>
- </Cube>
- <Cube time="2013-07-12">
- <Cube currency="USD" rate="1.3034"/>
- <Cube currency="JPY" rate="129.75"/>
- <Cube currency="BGN" rate="1.9558"/>
- <Cube currency="CZK" rate="25.951"/>
- <Cube currency="DKK" rate="7.4581"/>
- <Cube currency="GBP" rate="0.8627"/>
- <Cube currency="HUF" rate="292.82"/>
- <Cube currency="LTL" rate="3.4528"/>
- <Cube currency="LVL" rate="0.7027"/>
- <Cube currency="PLN" rate="4.3193"/>
- <Cube currency="RON" rate="4.4227"/>
- <Cube currency="SEK" rate="8.705"/>
- <Cube currency="CHF" rate="1.2388"/>
- <Cube currency="NOK" rate="7.913"/>
- <Cube currency="HRK" rate="7.532"/>
- <Cube currency="RUB" rate="42.685"/>
- <Cube currency="TRY" rate="2.5599"/>
- <Cube currency="AUD" rate="1.4436"/>
- <Cube currency="BRL" rate="2.9542"/>
- <Cube currency="CAD" rate="1.3537"/>
- <Cube currency="CNY" rate="8.0005"/>
- <Cube currency="HKD" rate="10.1106"/>
- <Cube currency="IDR" rate="13021.77"/>
- <Cube currency="ILS" rate="4.6921"/>
- <Cube currency="INR" rate="77.722"/>
- <Cube currency="KRW" rate="1467.36"/>
- <Cube currency="MXN" rate="16.7474"/>
- <Cube currency="MYR" rate="4.1416"/>
- <Cube currency="NZD" rate="1.6752"/>
- <Cube currency="PHP" rate="56.563"/>
- <Cube currency="SGD" rate="1.65"/>
- <Cube currency="THB" rate="40.64"/>
- <Cube currency="ZAR" rate="13.093"/>
- </Cube>
- </Cube>
- </gesmes:Envelope>
Leider schlägt das ganze mit einem Objektverweis fehl und weiss nicht warum.