AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Vorgegebenes XML-Document auslesen, Probleme
Thema durchsuchen
Ansicht
Themen-Optionen

Vorgegebenes XML-Document auslesen, Probleme

Ein Thema von delphihase · begonnen am 28. Okt 2011 · letzter Beitrag vom 1. Nov 2011
Antwort Antwort
delphihase

Registriert seit: 24. Jun 2011
21 Beiträge
 
Delphi XE Professional
 
#1

Vorgegebenes XML-Document auslesen, Probleme

  Alt 28. Okt 2011, 18:23
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)
  Mit Zitat antworten Zitat
delphihase

Registriert seit: 24. Jun 2011
21 Beiträge
 
Delphi XE Professional
 
#2

AW: Vorgegebenes XML-Document auslesen, Probleme

  Alt 30. Okt 2011, 16:21
Ooops falscher Bereich erwischt.

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

Danke !!
Grüße,

Maximilian alias delphihase
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#3

AW: Vorgegebenes XML-Document auslesen, Probleme

  Alt 30. Okt 2011, 16:43
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.

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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Okt 2011 um 16:46 Uhr)
  Mit Zitat antworten Zitat
delphihase

Registriert seit: 24. Jun 2011
21 Beiträge
 
Delphi XE Professional
 
#4

AW: Vorgegebenes XML-Document auslesen, Probleme

  Alt 1. Nov 2011, 10:05
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.
Grüße,

Maximilian alias delphihase

Geändert von delphihase ( 1. Nov 2011 um 10:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:31 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