Thema: Delphi Treeview mit XML füllen

Einzelnen Beitrag anzeigen

.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#1

Treeview mit XML füllen

  Alt 13. Dez 2007, 16:52
So, habe im Titel genanntes versucht. Habe mir auch einige Threads hier durchgelesen aber das nicht richtig verstanden, bzw konnte die Beispiele nicht ausführen.

Habe versucht das ganze rekursiv auszuführen und folgenden Code bekommen.
Delphi-Quellcode:
procedure TForm1.UpdateTree(Nodes: IXMLDOMNodeList);
var
  i: Integer;
  aTree: TTreeNode;
begin
  for i := 0 to Nodes.length - 1 do
  begin
    DialogTree.Items.AddChild(DialogTree.Selected, Nodes.item[i].nodeValue);
    if Nodes.item[i].childNodes.length > 0 then
    begin
      DialogTree.Selected := DialogTree.Selected.Item[0];
      UpdateTree(Nodes.item[i].childNodes);
    end;
  end;
end;

procedure TForm1.GetDialog(DialogName: String);
var
  i, j: Integer;
  NodeList: IXMLDOMNodeList;
  TreeNode: TTreeNode;
begin
  DialogTree.Items.Clear;
  Nodelist := xmlDoc.documentElement.selectNodes(DialogName);
  DialogTree.Items.BeginUpdate;
  DialogTree.Items.AddFirst(nil, DialogName);
  DialogTree.Selected := DialogTree.TopItem;
  UpdateTree(Nodelist);
  DialogTree.Items.EndUpdate;
end;
Ich gehe also immer wieder die Länge der NodeList durch, die ich aus dem XML Dokument habe. Dann füge ich jeweils ein Item als Child des gewählten Items des Treeviews hinzu, prüfe ob noch ChildNodes in der NodeList vorhanden sind und wenn, dann setze ich das neu hinzugefügte TreeViewItem selected und rufe die Prozedur nochmal mit den ChildNodes der NodeList aus.
Mist das is schwer zu erklären, ich hoffe ihr versteht was ihc meine. Es klappt aber nicht. Er fügt die Items wild durcheinander hinzu.

Das ist meine XML-Datei:
Zitat:
<?xml version='1.0' encoding='ISO-8859-1'?>
<dialogsammlung>
<Gespraech_mit_dem_Clown>
<sentence>Hallo, ich bin Marry, der Clown</sentence>
<option>Hi, ich bin Todd. Sehr erfreut!</option>
<option>Das interessiert mich doch nicht!</option>
</Gespraech_mit_dem_Clown>
<Gespraech_mit_Lisa>
<sentence>Hi, ich bin Lisa, das Supermodel</sentence>
<option>Du hast wirklich wahnsinnig große...Augen!</option>
<option>Sorry, aber ich habe keine Zeit für sowas. Ich muss die Welt retten!</option>
</Gespraech_mit_Lisa>
</dialogsammlung>
Da diese aber unbeschränkt viele Verschachtelungen haben kann, stellt sich das alles für mich als ein Problem dar.

Weiss wer wo der Fehler liegt? Wie mach ichs besser?

Danke schonmal!
  Mit Zitat antworten Zitat