Thema: Delphi Treeview mit XML füllen

Einzelnen Beitrag anzeigen

.chicken

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

Re: Treeview mit XML füllen

  Alt 14. Dez 2007, 17:15
Ok, es klappt noch nicht ganz wie ich es möchte. Das hier 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!
<collection>
<option>
Hi, ich bin Todd. Sehr erfreut!
<sentence>
Todd, kann ich dich um einen Gefallen bitten?
<collection>
<option>
Was darfs denn sein?
<sentence>
Ich habe meine Nase verloren, würdest du sie suchen?
<ende />
</sentence>
</option>
<option>
Kannst du das bitte nochmal wiederholen?
<move>Hier kommt dann eine Anweisung, wohin das Script sich bewegen soll, zB zurück zum ersten Sentence ("Hallo, ich bin Marry, der Clown!")</move>
</option>
<option>
Ich habe keine Zeit für sowas!
<ende />
</option>
</collection>
</sentence>
</option>
<option>
Lass mich in Ruhe! Ich habe keine Zeit!
<ende />
</option>
</collection>
</sentence>
</Gespraech_mit_dem_Clown>
</dialogsammlung>
So im Anhang habe ich ein Bild, wie das in den Treeview eingefügt wird. Und hier kommt meine Prozedur:
Delphi-Quellcode:
procedure TForm1.UpdateTree(Nodes: IXMLDOMNodeList; ParentNode: TTreeNode);
var
  i, j: Integer;
  aTree, NewParent: TTreeNode;
  subNode: IXMLDOMNode;
begin
  for i := 0 to Nodes.length - 1 do
  begin
    subNode := Nodes.item[i];
    aTree := DialogTree.Items.AddChild(ParentNode, subNode.Text);
    //Präfixe hinzufügen
    aTree.ImageIndex := 0;
    for j := 1 to high(PRAEFIXE) do
      if subNode.nodeName = PRAEFIXE[j] then
        aTree.ImageIndex := j;
    if subNode.nodeName = 'collectionthen
      aTree.Text := 'Collection'
    else
    if subNode.nodeName = 'endethen
      aTree.Text := 'Ende';
    //Präfixe Ende
    if subNode.childNodes.length > 0 then
    begin
      NewParent := aTree;
      UpdateTree(subNode.childNodes, NewParent);
    end;
  end;
end;
So, ich denke ihr seht wo das Problem ist. Die ganzen Sachen werden alle verdoppelt, dadurch dasss sie nochmal als SubNode angezeigt werden. Außerdem wird nicht nur der Text des aktuellen Nodes, sondern auch der aller Subnodes hinzugefügt.

Wie lässt sich das verhindern?
Stehe da etwas auf dem Schlauch :-\
Angehängte Grafiken
Dateityp: bmp dialogexample_204.bmp (1,50 MB, 57x aufgerufen)
  Mit Zitat antworten Zitat