Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Vorgegebenes XML-Document auslesen, Probleme (https://www.delphipraxis.net/164107-vorgegebenes-xml-document-auslesen-probleme.html)

delphihase 28. Okt 2011 18:23

Vorgegebenes XML-Document auslesen, Probleme
 
Hallo,

ich habe vor, eine XML-Datei mit folgendem Aufbau unter Delphi XE Professional auszulesen:

Code:
<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>
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.

Ä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:
  ListBox2.Items.Add('Zeit_' + IntToStr(ListBox2.Count));
  times.Add('12.00');
(Times ist schon definiert, keine Angst... Ohne Laden läuft das ganze auch schon, nur das mit dem Laden kriege ich einfach nicht hin!)

Ich hoffe, ihr könnt mir helfen (Bin nicht so der Profi-Programmierer)

delphihase 30. Okt 2011 16:21

AW: Vorgegebenes XML-Document auslesen, Probleme
 
Ooops :oops: falscher Bereich erwischt.

Kann ein Moderator das Bitte verschieben? http://www.delphipraxis.net/32-objec...lphi-language/

Danke !!

himitsu 30. Okt 2011 16:43

AW: Vorgegebenes XML-Document auslesen, Probleme
 
Zitat:

Die XML-Datei kann NICHT editiert werden. (Gespeichert wird sie nicht sehr professionell - hatte damals nur Delphi 7 Personal)
Das liegt aber garantiert nicht der Delphi-Version. :zwinker:

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.

delphihase 1. Nov 2011 10:05

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:
  ListBox2.Items.Add('Zeit_' + IntToStr(ListBox2.Count));
  times.Add('12.00');
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).

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:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items.Add('Haltestelle_' + IntToStr(ListBox1.Count));
  waypoints.Add('-1');
  traveltimes.Add('0');
  prices.Add('2.00');
end;
Ich könnte das ganze natürlich auch in eine Funktion auslagern, wenn das leichter ist.

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:
  for j := 0 to ListBox1.Count - 1 do
  begin
    Memo1.Lines.Add('  <Node ID="' + waypoints[j] + '" TravelTime="' + traveltimes[j] + '" Price="' + prices[j] + '"/>');
  end;
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.

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