Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi [TXMLDocument] Problem mit Darstellung in Treeview (https://www.delphipraxis.net/118194-%5Btxmldocument%5D-problem-mit-darstellung-treeview.html)

calculon 2. Aug 2008 15:10


[TXMLDocument] Problem mit Darstellung in Treeview
 
Hallo,

ich will eine solch-strukturierte XML-Datei in einer Treeview darstellen:

XML-Code:
   <Group title="Blabla" comment="">
      <Group title="Blablabla" comment="">
         <Document title="Blalba">
            <Source>http://www.blabla.com</Source>
         </Document>
         <Document title="Blablabla">
            <Source>http://www.blabla.com</Source>
         </Document>
         <Document title="Blablabla">
            <Source>http://www.blabla.com</Source>
            <Source>http://www.blablablabla.com</Source>
         </Document>
Das mach' ich rekursiv und es funtioniert auch alles, aber wenn innerhalb eines title-Blocks mehrere <Source> Elemente sind, wird nur der erste genommen. Der Rest wird ignoriert. Ich will aber alle als Nodes darstellen. Hier etwas Quellcode:

Delphi-Quellcode:
  var
    Node : IXMLNode;
    trn: TTreenode;
  begin
   
    [..]

    if Node = nil then Exit;
      // tree ist meine treeview
      trn := tree.Items.AddChild(trn, Node.Attributes['title']);
      if trim(Node.ChildNodes.Nodes['Source'].Text) <> '' then
        trn := tree.Items.AddChild(trn, Node.ChildNodes.Nodes['Source'].Text);
Kann mir jemand weiterhelfen?

Gruß
--

Morphie 2. Aug 2008 15:23

Re: [TXMLDocument] Problem mit Darstellung in Treeview
 
hmmm ungetestet, sollte aber funzen:
Delphi-Quellcode:
var
    Node : IXMLNode;
    trn: TTreenode;
    dtrn: TTreeNode;
    i: integer;
  begin


    if Node = nil then Exit;
      // tree ist meine treeview
      trn := tree.Items.AddChild(trn, Node.Attributes['title']);
      for i := 0 to node.ChildNodes.count - 1 do
      begin
        if trim(node.ChildNodes.Nodes[i].Text)<>'' then
        begin
          dtrn := tree.Items.AddChild(trn, Node.ChildNodes.Nodes['Source'].Text);
        end;
      end;

calculon 2. Aug 2008 15:42

Re: [TXMLDocument] Problem mit Darstellung in Treeview
 
Hi Morphie,

leider nicht; nun erkennt er zwar die richtige Anzahl, aber jetzt steht der selbe erste Wert eben zwei- oder dreimal untereinander.

In der Zwischenzeit hab ich herausgefunden, dass man mit
Delphi-Quellcode:
tree.Items.AddChild(trn, Node.ChildNodes.Nodes['Source'].NextSibling.Text
zum nächsten Eintrag gehen kann, aber ich kann das Ganze einfach nicht rekursiv verpacken. Ich gelange immer in eine Endlosschleife...

Gruß
--

calculon 2. Aug 2008 15:51

Re: [TXMLDocument] Problem mit Darstellung in Treeview
 
Hab's jetzt, musste nur ein bisserl vertauschen
Delphi-Quellcode:
if trim(Node.ChildNodes.Nodes['Source'].Text) <> '' then
  begin
    for j := 0 to node.ChildNodes.count - 1 do
      begin
        dtrn := tree.Items.AddChild(trn, Node.ChildNodes.Nodes[j].Text);
      end;
  end;
Danke für die Hilfe!

Gruß
--

Morphie 2. Aug 2008 17:33

Re: [TXMLDocument] Problem mit Darstellung in Treeview
 
klar, sorry, das hab ich übersehen ;-)
wie gesagt, nicht getestet...


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz