{----------------------------------------------------------------------} function TForm1.GetXmlTree2(nNode: IXMLNode): string; var i, j: integer; begin s := s + ’<’ + nNode.NodeName; for j:=0 to nNode.AttributeNodes.Count-1 do begin s := s + ’ ’+ nNode.AttributeNodes[j].NodeName; s := s + ’=\"’+ nNode.AttributeNodes[j].NodeValue +’\"’; end; s := s + ’>’; if nNode.IsTextElement then s := s + nNode.Text else begin s := s + #13 + #10; if nNode.HasChildNodes then for i:=0 to nNode.ChildNodes.Count-1 do begin GetXmlTree2(nNode.ChildNodes.Nodes[i]); end; end; s := s + ’</’ + nNode.NodeName + ’>’+ #13 + #10; result := s; end; {----------------------------------------------------------------------} 调用: procedure TForm1.Button4Click(Sender: TObject); var oXml: TXMLDocument; begin oXml := TXMLDocument.Create(self); oXml.FileName := ’_Treeview.xml’; oXml.Active:=true; s :=’’; s := GetXmlTree1(oXml.ChildNodes.FindNode(’root’)); Memo1.Lines.Add(s); oXml.Free; end; procedure TForm1.Button5Click(Sender: TObject); var oXml: TXMLDocument; begin oXml := TXMLDocument.Create(self); oXml.FileName := ’_Treeview.xml’; oXml.Active:=true; s :=’’; s := GetXmlTree2(oXml.ChildNodes.FindNode(’root’)); Memo1.Lines.Add(s); oXml.Free; end;