因为想把每个节点其他的信息也记录下来,所以单纯使用savetofile存成txt文件好像还不行。

解决方案 »

  1.   

    //一个简单的保存一级结点的例子
      //保存结点 Node:树结点 Root:保存到xml结点
      procedure AddNodeXml(Node: TTreeNode; var Root: IXMLNode);
      var
        ss, code: string;
        upNode: IXMLNode;
        index: integer;
      begin
        ss := Trim(Node.Text);//结点文本格式:code + ' ' + name
        code := Copy(ss, 1, Pos(' ', ss) - 1);
        system.Delete(ss, 1, Pos(' ', ss));
        upNode := Root.AddChild('node');
        upNode.SetAttributeNS('code', '', ss);
        upNode.SetAttributeNS('name', '', code);    
      end;  //保存到文件 filename:文件名
      procedure SaveToXmlFile(const FileName: String);
      var
        XMLDoc: TXMLDocument;
        Root: IXMLNode;
        i: integer;
        ss: String;
      begin
        XMLDoc := TXMLDocument.Create(Self);
        try
          XMLDoc.Active := True;
          XMLDoc.Encoding := 'UTF-8';
          Root := XMLDoc.AddChild('Root');      for i := 0 to tvVersion.Items[0].Count - 1 do
          begin
            AddNodeXml(tvVersion.Items[0].Item[i], Root);
          end;      XMLDoc.SaveToFile(FileName);
        finally
          XMLDoc.Free;
        end;
      end;
      

  2.   

    多级就用递归照样存啊,不过传进去的root改成父结点所对应的xml结点了而已。
    在AddNodeXml函数最后加一句就可以了
      for i := 0 to Node.Count - 1 do
          begin
            AddNodeXml(Node.Item[i], UpNode);
          end;