Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   XML-Datei einlesen (https://www.delphipraxis.net/209427-xml-datei-einlesen.html)

Adenos 5. Dez 2021 12:53

XML-Datei einlesen
 
Hallo,

ich habe eine XML-Datei mit folgendem Inhalt:
<Cube>
<Cube time='2021-12-03'>
<Cube currency='USD' rate='1.1291'/>
<Cube currency='JPY' rate='127.97'/>
<Cube currency='BGN' rate='1.9558'/>
usw.
wie kann ich die "Cube time" in einem Label darstellen?

Aviator 5. Dez 2021 15:05

AW: XML-Datei einlesen
 
Schau dir mal das
Delphi-Quellcode:
IXmlDocument
Interface an. Damit kannst du deine XML Datei einlesen und dann über die Nodes iterieren. Beim Iterieren musst du dann nach dem
Delphi-Quellcode:
time
Attribut Ausschau halten das du einlesen willst.

Edit: Ich kenne zwar nicht den genauen Anwendungsfall, aber ich hab das Gefühl, dass der Aufbau der XML Datei etwas komisch ist. Ist das eine Vorgabe eines anderen Programms oder hast du die selbst gemacht?

Ein Aufbau in dieser Form wäre sicherlich besser einlesbar.

XML-Code:
<cube time='2021-12-03'>
    <currency name='USD' rate='1.1291'/>
    <currency name='JPY' rate='127.97'/>
    <currency name='BGN' rate='1.9558'/>
</cube>

Adenos 5. Dez 2021 15:22

AW: XML-Datei einlesen
 
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.

zeras 5. Dez 2021 15:35

AW: XML-Datei einlesen
 
Für das Datum nimmst du StrToDate.
Dann hast du einen TDateTime Wert, den du dann beliebig anzeigen lassen kannst.
Bei den
Delphi-Quellcode:
AFormatSettings: TFormatSettings
musst du die Settings so eintragen, wie in deinem Beispiel angegeben.

Adenos 5. Dez 2021 15:41

AW: XML-Datei einlesen
 
vielen Dank, aber ich weiß nicht, wie ich auf das Feld cube time zugreifen kann.

Aviator 5. Dez 2021 15:55

AW: XML-Datei einlesen
 
Time ist ein Attribute des Nodes Cube. Wie liest du denn aktuell die Daten ein? Sicherlich nutzt du eine Klasse in der es ein Attribute Property gibt.

Adenos 5. Dez 2021 15:59

AW: XML-Datei einlesen
 
die Kurse lese ich so ein:
with Doc.DocumentElement.FindNode('Cube').FirstChild.Ch ildNodes do
begin
for i := 0 to (Count - 1) do
begin
Memo1.Lines.Add(Item[i].Attributes.GetNamedItem('currency').NodeValue +
':' + Item[i].Attributes.GetNamedItem('rate').NodeValue);
end;
end;

zeras 5. Dez 2021 16:04

AW: XML-Datei einlesen
 
Versuche es doch mal so:
Delphi-Quellcode:
Memo1.Lines.Add(Item[0].Attributes.GetNamedItem('time').NodeValue

Aviator 5. Dez 2021 16:09

AW: XML-Datei einlesen
 
Aber Achtung bei nicht vorhandenen Attributen. Ggf. sollte vorher mit
Delphi-Quellcode:
HasAttribute()
geprüft werden ob das Attribut überhaupt existiert. Oder anders herum ob die Rückgabe nicht
Delphi-Quellcode:
nil
ist.

Adenos 5. Dez 2021 16:38

AW: XML-Datei einlesen
 
das Programm hat eine Exception-Klasse "External: SIGSEGV" ausgelöst in der Zeile:
LabelEZBDatum.Caption:=Doc.DocumentElement.Attribu tes.GetNamedItem('Cube time').NodeValue;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz