Einzelnen Beitrag anzeigen

Benutzerbild von fs999
fs999

Registriert seit: 4. Dez 2006
Ort: Luxembourg
46 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Treeview mit XML-Dokument füllen

  Alt 24. Jan 2017, 12:50
Es kommt erstmal darauf an, wie und was du in dem TreeView anzeigen möchtest.

Ein Beispiel fündest du z.B. in Hier im Forum suchenhimXML > demos\Demo_Tree > Demo_TreeU.pas > TForm1.FillTree

in Kurz sähe Dieses etwa so aus:
Delphi-Quellcode:
Procedure TForm1.FillTree;
  Procedure Fill(Nodes: TXMLNodeList; Item: TTreeNode);
    Var Node: TXMLNode;
      Item2: TTreeNode;

    Begin
      Node := Nodes.FirstNode;
      While Assigned(Node) do Begin
        Item2 := TreeView1.Items.AddChildObject(Item, Node.Name, nil);
        If Node.Nodes.hasChildNodes Then Fill(Node.Nodes, Item2);
        Node := Node.NextNode;
      End;
    End;

  Begin
    TreeView1.Items.Clear;
    Fill(XML.Nodes, nil);
  End;
Du nimmst dir den Hauptnode des XML-Dokuments vor und füllst dessen Knoten in den Hauptknoten des TreeView ein

Hat ein XML-Node "Kinter" (untergeordnete Nodes), dann nimmst du wiederum diese und füllst sich in den entsprechenden Knoten des TreeView und wiederholst das so lange, bis alles drin ist.

Das wäre so die "einfache" rekursive Methode.
Da fehlen noch die Werten...

Delphi-Quellcode:
      ...
      Item2 := Items.AddChildObject(Item, Node.Name, nil);
      if Node.Nodes.NodeCount > 0 then
        Fill(Node.Nodes, Item2)
      // wenn keine subnodes dann Wert einfügen !
      else
        Items.AddChildObject(Item2, Node.XMLText, nil);
      Node := Node.NextNode;
      ...
mfG

Geändert von fs999 (24. Jan 2017 um 12:54 Uhr)
  Mit Zitat antworten Zitat