Ich habe das TXmlDocument nicht, aber das Prinzip ist doch IMHO recht simpel. Du brauchst eine Routine, die sich durch die ganzen Knoten im Tree-View hangelt. Die startest du das erste Mal mit dem
TopNode des Baums. Vereinfacht ausgedrückt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure ProcessTreeItem(const ParentTreeNode: TTreeNode; ParentXmlNode: IXmlNode; XmlDoc: TXmlDocument); var ChildXmlNode : IXmlNode; begin if(ParentTreeNode = nil) then exit;
if(ParenXmlNode <> nil) then ChildXmlNode := ParentXmlNode.AddChild(ParentTreeNode.Text) else ChildXmlNode := XmlDoc.AddChild(ParentTreeNode.Text);
if(ParentTreeNode.Count > 0) then for i := 0 to ParentTreeNode.Count - 1 do ProcessTreeItem(ParentTreeNode.Item[i],ChildXmlNode,XmlDoc); end;
var XmlDoc : TXmlDocument;
begin XmlDoc := TXmlDocument.Create(nil);
ProcessTreeItem(TreeView1.TopItem,nil,XmlDoc);
end; |
Wie gesagt, ich habe keine Ahnung von dieser TXmlDocument-Komponente, darum habe ich einfach mal geraten was den Code angeht. Kann sein, dass du noch spezielle Attribute o.ä. setzen musst (irgendeine Bedeutung muss ja dein "StrArray" usw. haben), aber grundlegend sollte dieser Code eine XML-Struktur deines Tree-Views aufbauen.