⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 savexml.pas

📁 Delphi保存结构化XML文件的例子
💻 PAS
字号:
unit SaveXml;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, xmldom, XMLIntf, msxmldom, XMLDoc,VO;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    SaveDialogToXml: TSaveDialog;
    XmlCompanyInfo: TXMLDocument;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    procedure saveAppConfig(XMLSavePath:String);
    procedure BuildCompanyInfo();
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  MyCompayInfo:CompayInfo;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var  XMLSavePath:String;
begin
    {需要检查项目:
    1、登录窗口是否保存
    2、用户名框是否保存,用户名框是否属于登录窗口
    3、密码框是否保存,密码框是否属于登录窗口
    4、确定按钮是否保存,确定按钮是否属于登录窗口
    }
    SaveDialogToXML.DefaultExt := 'xml';
    if SaveDialogToXML.Execute then
    begin
        XMLSavePath := SaveDialogToXML.FileName;
        BuildCompanyInfo();
        saveAppConfig(XMLSavePath);
        MessageBox(handle, 'XML文件已经成功保存。',
         '提示 ',MB_OK+MB_ICONINFORMATION);
    end
    else
        exit;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    close;
end;

procedure TForm1.BuildCompanyInfo();
var ListUsers:TStringList;
    zhangsan,lisi,wangwu:User;
begin
  MyCompayInfo.Code := '001';
  MyCompayInfo.Name := '火星矿石货运集团';
  MyCompayInfo.Address := '第二宇宙银河太阳系地球村';
  SetLength(MyCompayInfo.ListUsers,3);

  zhangsan.ID := '001';
  zhangsan.Name := '张三';
  zhangsan.Sex := '男';
  zhangsan.Department := '财务部';
  zhangsan.Mobile := '1234567878';
  zhangsan.Email := 'zhangsan@earth.com';
  MyCompayInfo.ListUsers[0] := zhangsan;

  lisi.ID := '002';
  lisi.Name := '李四';
  lisi.Sex := '男';
  lisi.Department := '外务部';
  lisi.Mobile := '1234567878';
  lisi.Email := 'lisi@earth.com';
  MyCompayInfo.ListUsers[1] := lisi;

  wangwu.ID := '003';
  wangwu.Name := '王五';
  wangwu.Sex := '男';
  wangwu.Department := '交通部';
  wangwu.Mobile := '1234567878';
  wangwu.Email := 'wangwu@earth.com';
  MyCompayInfo.ListUsers[2] := wangwu;
end;

procedure TForm1.saveAppConfig(XMLSavePath:String);
var
    XmlCompanyInfo :TXMLDocument;
    RootNode,CompanyItemNode,UserNode,ItemChildNode : IXMLNode;
    ValueNode:IXMLNode;
    index : Integer;
    IndexedUser:User;
begin
    XmlCompanyInfo := TXMLDocument.Create(nil);
    XmlCompanyInfo.Active := True;
    XmlCompanyInfo.Encoding := 'GB2312';
    //<MyCompayInfo>
    RootNode:=XmlCompanyInfo.CreateNode('Company');
    XmlCompanyInfo.DocumentElement := RootNode;
    //<Code>
    CompanyItemNode := XmlCompanyInfo.CreateNode('Code');
    RootNode.ChildNodes.Add(CompanyItemNode);
    CompanyItemNode.ChildNodes.Add(XmlCompanyInfo.CreateNode(MyCompayInfo.Code,ntText));

    //<Name>
    CompanyItemNode := XmlCompanyInfo.CreateNode('Name');
    RootNode.ChildNodes.Add(CompanyItemNode);
    CompanyItemNode.ChildNodes.Add(XmlCompanyInfo.CreateNode(MyCompayInfo.Name,ntText));
    //<Address>
    CompanyItemNode := XmlCompanyInfo.CreateNode('Address');
    RootNode.ChildNodes.Add(CompanyItemNode);
    CompanyItemNode.ChildNodes.Add(XmlCompanyInfo.CreateNode(MyCompayInfo.Address,ntText));

    //<Users>
    CompanyItemNode := XmlCompanyInfo.CreateNode('Users');
    RootNode.ChildNodes.Add(CompanyItemNode);
    for index := 0 to Length(MyCompayInfo.ListUsers)-1 do
    begin
        IndexedUser := MyCompayInfo.ListUsers[index];
        //User
        UserNode := XmlCompanyInfo.CreateNode('User');
        CompanyItemNode.ChildNodes.Add(UserNode);
        //User:<ID>
        ItemChildNode := XmlCompanyInfo.CreateNode('ID');
        UserNode.ChildNodes.Add(ItemChildNode);
        ValueNode := XmlCompanyInfo.CreateNode(IndexedUser.ID,ntText);
        ItemChildNode.ChildNodes.Add(ValueNode);
        //User:<Name>
        ItemChildNode := XmlCompanyInfo.CreateNode('Name');
        UserNode.ChildNodes.Add(ItemChildNode);
        ValueNode := XmlCompanyInfo.CreateNode(IndexedUser.Name,ntText);
        ItemChildNode.ChildNodes.Add(ValueNode);
        //User:<Sex>
        ItemChildNode := XmlCompanyInfo.CreateNode('Sex');
        UserNode.ChildNodes.Add(ItemChildNode);
        ValueNode := XmlCompanyInfo.CreateNode(IndexedUser.Sex,ntText);
        ItemChildNode.ChildNodes.Add(ValueNode);
        //User:<Department>
        ItemChildNode := XmlCompanyInfo.CreateNode('Department');
        UserNode.ChildNodes.Add(ItemChildNode);
        ValueNode := XmlCompanyInfo.CreateNode(IndexedUser.Department,ntText);
        ItemChildNode.ChildNodes.Add(ValueNode);
        //User:<Mobile>
        ItemChildNode := XmlCompanyInfo.CreateNode('Mobile');
        UserNode.ChildNodes.Add(ItemChildNode);
        ValueNode := XmlCompanyInfo.CreateNode(IndexedUser.Mobile,ntText);
        ItemChildNode.ChildNodes.Add(ValueNode);
        //User:<Email>
        ItemChildNode := XmlCompanyInfo.CreateNode('Email');
        UserNode.ChildNodes.Add(ItemChildNode);
        ValueNode := XmlCompanyInfo.CreateNode(IndexedUser.Email,ntText);
        ItemChildNode.ChildNodes.Add(ValueNode);
    end;

    //保存
    XmlCompanyInfo.SaveToFile(XMLSavePath);
    XmlCompanyInfo.Active:=false;
end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -