P
Nach längerer Zeit bin ich wieder über das o.a. Problem gestolpert, bzw. die damalige Übung findet nun einen praktischen Nutzen.
Nachdem ich den Vormittag darüber nachgegrübelt, gemacht, getan und probiert habe, bin ich auf einen kleinen und feinen Denkfehler gestoßen.
Hier nun die LÖsung für alle, die's interessiert:
// @param root: (next) parent node from XML Tree
// @param next: "depth level" of TTree
// returns number of added elements
int TForm1::ShowXMLTree(XMLNode root, TTreeNode* next)
{
XMLTreeData* myDataPtr;
TTreeNode * lastAdded;
XMLNodeList list=root->GetChildNodes();
for (int i=0; i<list->Count; i++)
{
root=list->Get(i); // next node
String rootNodename=root->GetNodeName();
if(rootNodename[1]!='#')
{
myDataPtr= new XMLTreeData;
myDataPtr->xmlNode=root;
lastAdded=XMLDocTree->Items->AddChildObject(next,rootNodename,myDataPtr);
Counter++;
}
if (root->HasChildNodes)
ShowXMLTree(root, lastAdded);
}
return Counter;
}
Wichtig ist es, den zuletzt eingefügten Knoten im erneuten ShowXMLTree-Aufruf
zu übergeben, dann klappt's auch mit dem Nachbarn.