Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Daten aus XML Dokument auslesen und in Memo einfuegen

  Alt 23. Aug 2008, 02:18
Deine Frage ist etwas ungenau.
Also <suspend> und <scenario> sind Elemente (zu einem Element gehört auch noch der schliesende Tag).
start="226218" usw. sind Attribute.
Du könntest alle Elemente besuchen und dann alle Attribute des jeweiligen Element auslesen.
Diese Elemente und Attribute sind hierarchisch geschachtelt; deshalb ist ein TreeView sehr gut geeignet um eine XML-Datei darzustellen.

Um die Elemente abzugrasen, ist ein rekursiver Code sehr nützlich:
Delphi-Quellcode:
// das Beispiel lässt sich so nicht kompilieren,
// sondern soll nur das Grundprinzip zeigen
procedure TForm1.BesucheElement(e:TXmlElement; level:integer);
begin
  Memo.Lines.Add(StringOfChar(' ',level) + e.NodeName);
  for i:=0 to e.ElementCount-1 do
    BesucheElement(e.Elements[i], level+1);
end;
Mit StringOfChar() wird zusammen mit dem Parameter level eine Einrückung entsprechend den Elementebene erzeugt.

Jetzt fehlen noch die Attribute:
Delphi-Quellcode:
procedure TForm1.BesucheElement(e:TXmlElement; level:integer);
begin
  Memo.Lines.Add(StringOfChar(' ',level) + e.NodeName);
  for j:=0 to e.AttributCount-1 do
    Memo.Lines.Add(StringOfChar(' ',level) + e.Attributes[j].NodeName + '=' + e.Attributes[j].NodeValue);
    
  for i:=0 to e.ElementCount-1 do
    BesucheElement(e.Elements[i], level+1);
end;
Der Aufruf sieht ungefähr so aus:
Delphi-Quellcode:
Memo.Clear;
// das Wurzelelement beginnt mit Level 0; also ohne Einrückung
BesucheElement(XmlDocument.DocumentElement, 0);
Je nachdem, welchen XML Parser du verwendest, kann die Syntax von meinem Beispiel abweichen, aber das Grundprinzip bleibt gleich.
  Mit Zitat antworten Zitat