![]() |
Vorgegebenes XML-Document auslesen, Probleme
Hallo,
ich habe vor, eine XML-Datei mit folgendem Aufbau unter Delphi XE Professional auszulesen:
Code:
Dazu suche ich die einfachste Möglichkeit, alles auszulesen. Bei den <Time>-Einträgen und den <Node>-Einträgen in zwei Verschiedene TStringLists einzutragen und diese dann in eine ListBox einzutragen.
<Root>
<General Attribut1="Lala" Attribut2="hihi" Attribut3="ausgelesen!"/> <!-- vereinfacht, in Wirklichkeit andere Attribute & noch viel viel länger... --> <Time value="1.00"/> <Time value="2.00"/> <!-- geht immer so weiter, unendlich viel möglich --> <Node ID="100" TravelTime="0" Price="10.00"/> <!-- können ebenfalls unendlich viel Einträge, nicht Attribute (!) sein --> </Root> Änderungen im Programm (grundaufbau mit Listbox & TStringList) sind nicht mehr möglich. Die XML-Datei kann NICHT editiert werden. (Gespeichert wird sie nicht sehr professionell - hatte damals nur Delphi 7 Personal) Zum adden von TStringList & ListBox verwende ich folgenden Code:
Code:
(Times ist schon definiert, keine Angst... Ohne Laden läuft das ganze auch schon, nur das mit dem Laden kriege ich einfach nicht hin!)
ListBox2.Items.Add('Zeit_' + IntToStr(ListBox2.Count));
times.Add('12.00'); Ich hoffe, ihr könnt mir helfen (Bin nicht so der Profi-Programmierer) |
AW: Vorgegebenes XML-Document auslesen, Probleme
Ooops :oops: falscher Bereich erwischt.
Kann ein Moderator das Bitte verschieben? ![]() Danke !! |
AW: Vorgegebenes XML-Document auslesen, Probleme
Zitat:
Was heißt denn "nicht professionell/editiert"? Ist die XML-Syntax etwa fehlerhaft? Wie oft soll sowas denn eingelesen werden? Nur einmalig zum Importieren/Konvertieren und öfters. Wenn die Dateien syntaktisch total vermurkst sind und es nur einmalig ist, dann könnte man locker mal mit RegEx rangehn und so die Dateien zerlegen/parsen. |
AW: Vorgegebenes XML-Document auslesen, Probleme
Der XML-Syntax ist nicht fehlerhaft, die XML-Datei kann deshalb nicht editiert werden, da sie von einem anderen Programm vorgegeben wird.
Also wie gesagt, ich muss a) alle Attribute bei General als "String" bekommen (einzeln natürlich) b) die Time-Values alle hintereinander irgendwie an diesen Quellcode übergeben:
Delphi-Quellcode:
Nur das dann halt statt '12.00' der Wert aus dem Attribut value ausgelesen wird (in der beispiel-XML waren es die Werte 1.00 und 2.00).
ListBox2.Items.Add('Zeit_' + IntToStr(ListBox2.Count));
times.Add('12.00'); Also sollen alle Werte der Reihe nach in die StringList times eingefügt werden. Wenn ich es mit Times schaffe, ist es leicht zu schaffen, auch bei Node das ganze einzubauen. Hier mein Code zum Einfügen dort:
Delphi-Quellcode:
Ich könnte das ganze natürlich auch in eine Funktion auslagern, wenn das leichter ist.
procedure TForm1.Button1Click(Sender: TObject);
begin ListBox1.Items.Add('Haltestelle_' + IntToStr(ListBox1.Count)); waypoints.Add('-1'); traveltimes.Add('0'); prices.Add('2.00'); end; Das einzige was ich schaffen muss ist, die Attributes auszulesen. In der Umsetzung bin ich völlig frei. Ob ich Standard-Klassen verwende oder andere ist nicht vorgegeben. EDIT: Die XML wird gespeichert, in dem ich einfach so ähnlichen Quellcode geschrieben habe und dann die Memo1 in ein File gespeichert habe.
Delphi-Quellcode:
Also ohne Hilfe von anderen Komponenten - dies hätte ich als "professionell" bezeichnet, fehlerfrei ist die XML aber trotzdem, denn sie kann von dem anderen Programm ohne Probleme eingelesen werden.
for j := 0 to ListBox1.Count - 1 do
begin Memo1.Lines.Add(' <Node ID="' + waypoints[j] + '" TravelTime="' + traveltimes[j] + '" Price="' + prices[j] + '"/>'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 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