ak hat folgendes geschrieben: |
Wie gesagt ich darf nicht wissen wie die Knote heissen. Habt ihr eine Idee? |
Du meinst: du weißt nicht, wie die Knoten heißen, möchtest es aber herausfinden.
Egal. Ich weiß nicht, ob eine Listbox das richtige ist. Ich habe dir mal ein Beispiel mit einem Tree-View gemacht.
Aber weil ich nur D5 und die MS-XML-Typbibliothek habe, läuft mein Beispiel nicht mit der XML-Komponente, die du benutzt. So unähnlich sind sich die Befehle aber gar nicht. Ich bin der Meinung, du müsstest folgendes recht simpel "übersetzen" können.
Folgende Voraussetzung: du kennst die Knotennamen nicht, willst aber die komplette Datei (bzw. ihre Knoten) anzeigen lassen. In dem Fall brauchst du eine Prozedur oder Funktion, die sich selbst immer wieder aufruft - solange es eben untergeordnete Knoten gibt.
Nach dem Laden der XML-Datei habe ich den Tree-View "gesäubert" und dann die Prozedur aufgerufen. Geh bitte davon aus, dass "xmldoc" mein XML-Objekt ist (quasi das, was deiner Komponente entspricht):
Delphi-Quelltext
1:
| GetThoseNodes(xmldoc.documentElement,nil); |
Das
nil bedeutet, es gibt zu diesem Zeitpunkt noch keinen übergeordneten Knoten im Tree-View. Logischerweise, denn hier wird ja mit "documentElement" der Root-Knoten des XML-Dokumentes übergeben.
Die Prozedur "GetThoseNodes" ist eine (meinem Button-Klick) untergeordnete Prozedur und sieht so aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| procedure GetThoseNodes(const xmlParent: IXMLDOMNode; tvParent: TTreeNode); var tn : TTreeNode; i : integer; s : string; begin if(xmlParent = nil) then exit;
if(xmlParent.Get_nodeType = NODE_ELEMENT) then s := xmlParent.Get_nodeName else s := xmlParent.Get_nodeValue;
if(tvParent = nil) then tn := tv.Items.Add(nil,s) else tn := tv.Items.AddChild(tvParent,s);
if(xmlParent.childNodes.length > 0) then for i := 0 to xmlParent.childNodes.length - 1 do GetThoseNodes(xmlParent.childNodes.item[i],tn); end; |
Wie gesagt, ich habe nicht diese Komponente (oder was immer das in deinem Fall ist), aber du müsstest Ähnlichkeiten feststellen können. So gesehen sollte es wirklich nicht schwer sein, die Prozedur für dein Programm umzubauen.
Gruß.
btw:

[url=
www.delphipraxis.com...plett+auslesen.html]klick[/url]