AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML-Datei einlesen

Ein Thema von Adenos · begonnen am 5. Dez 2021 · letzter Beitrag vom 6. Dez 2021
 
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
715 Beiträge
 
Delphi 12 Athens
 
#6

AW: XML-Datei einlesen

  Alt 6. Dez 2021, 15:03
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;
Peter Below
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz