das
XML-Dokument ist nicht selbst gemacht. Auf der Seite
http://www.ecb.europa.eu/stats/eurof...xref-daily.xml veröffentlicht die EZB einmal täglich die aktuellen Euro-Kurse. Beim Einlesen der eigentlichen Kurse hat mir schon jemand geholfen, aber das mit dem Datum bekomme ich nicht auf die Reihe.
Wer immer dieses Format entwickelt hat sollte standrechtlich erschossen werden
.
Code:
<Cube>
<Cube time='2021-12-03'>
<Cube currency='USD' rate='1.1291'/>
<Cube currency='JPY' rate='127.97'/>
<Cube currency='BGN' rate='1.9558'/>
<Cube currency='CZK' rate='25.415'/>
<Cube currency='DKK' rate='7.4362'/>
<Cube currency='GBP' rate='0.85048'/>
</Cube>
</Cube>
Es gibt hier
drei verschiedene Typen von "Cube"-Nodes, und damit kommt nicht mal der
XML Data Binding Wizard von Delphi klar.
Das hier scheint zu funktionieren:
Delphi-Quellcode:
procedure TForm1.Display(const Fmt: string; const Values: array of const);
begin
memo1.Lines.Add(Format(Fmt, Values));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
LEnvelope: IXMLDocument;
LOuterCube: IXMLNode;
LTimeCube: IXMLNode;
LCurrencyCube: IXMLNode;
begin
LEnvelope := TXmlDocument.Create(nil);
LEnvelope.LoadFromFile('C:\Users\Peter_2\Downloads\eurofxref-daily.xml');
LEnvelope.Active := True;
memo1.Clear;
LOuterCube := LEnvelope.DocumentElement.ChildNodes[2];
LTimeCube := LOuterCube.ChildNodes[0];
Display('Date: %s', [LTimeCube.Attributes['time']]);
LCurrencyCube := LTimeCube.ChildNodes[0];
while Assigned(LCurrencyCube) do begin
Display('Currency: %s; Rate: %s',
[LCurrencyCube.Attributes['currency'],
LCurrencyCube.Attributes['rate']] );
LCurrencyCube := LCurrencyCube.NextSibling;
end;
end;