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

📄 uxml.pas

📁 用Delphi对XML进行增删改操作示例
💻 PAS
字号:
unit uXML;

interface

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

type
  TForm1 = class(TForm)
    XMLDocument1: TXMLDocument;
    btnShowNode1: TButton;
    Memo1: TMemo;
    btnShowNode2: TButton;
    btnEditNode1: TButton;
    btnEditNode2: TButton;
    btnAddNode: TButton;
    Memo2: TMemo;
    btnDelNode: TButton;
    btnViewXml: TButton;
    procedure btnShowNode1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure btnShowNode2Click(Sender: TObject);
    procedure btnEditNode1Click(Sender: TObject);
    procedure btnEditNode2Click(Sender: TObject);
    procedure btnAddNodeClick(Sender: TObject);
    procedure btnDelNodeClick(Sender: TObject);
    procedure btnViewXmlClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Email;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  XMLDocument1.Active := False;
  XMLDocument1.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Email.xml');
  XMLDocument1.Active := True;
end;

procedure TForm1.btnShowNode1Click(Sender: TObject);
var
  i: Integer;
  AXmlNode: IXMLNode;
begin
  AXmlNode := XMLDocument1.DocumentElement;
  Memo1.Lines.Clear;
  Memo1.Lines.Add('Heading=' + AXmlNode.ChildNodes['Heading'].Text);
  for i := 0 to AXmlNode.ChildNodes['From'].ChildNodes.Count - 1 do
  begin
    Memo1.Lines.Add('From->Contact->Name=' + AXmlNode.ChildNodes['From'].ChildNodes[i].ChildNodes['Name'].Text);
    Memo1.Lines.Add('From->Contact->Email=' + AXmlNode.ChildNodes['From'].ChildNodes[i].ChildNodes['Email'].Text);
  end;
  for i := 0 to AXmlNode.ChildNodes['To'].ChildNodes.Count - 1 do
  begin
    Memo1.Lines.Add('To->Contact->Name=' + AXmlNode.ChildNodes['To'].ChildNodes[i].ChildNodes['Name'].Text);
    Memo1.Lines.Add('To->Contact->Email=' + AXmlNode.ChildNodes['To'].ChildNodes[i].ChildNodes['Email'].Text);
  end;
  Memo1.Lines.Add('Body=' + AXmlNode.ChildNodes['Body'].Text);
end;

procedure TForm1.btnShowNode2Click(Sender: TObject);
var
  i: Integer;
  AXmlNoteType: IXMLNoteType;
begin
  AXmlNoteType := GetNote(Self.XMLDocument1);
  //AXmlNoteType := LoadNote(ExtractFilePath(ParamStr(0)) + 'Email.xml');
  Memo1.Lines.Clear;
  Memo1.Lines.Add('Heading=' + AXmlNoteType.Heading);
  for i := 0 to AXmlNoteType.From.Count - 1 do
  begin
    Memo1.Lines.Add('From->Contact->Name=' + AXmlNoteType.From.Contact[i].Name);
    Memo1.Lines.Add('From->Contact->Email=' + AXmlNoteType.From.Contact[i].Email);
  end;
  for i := 0 to AXmlNoteType.To_.Count - 1 do
  begin
    Memo1.Lines.Add('To->Contact->Name=' + AXmlNoteType.To_.Contact[i].Name);
    Memo1.Lines.Add('To->Contact->Email=' + AXmlNoteType.To_.Contact[i].Email);
  end;
  Memo1.Lines.Add('Body=' + AXmlNoteType.Body);
end;

procedure TForm1.btnEditNode1Click(Sender: TObject);
var
  AXmlNode: IXMLNode;
begin
  AXmlNode := XMLDocument1.DocumentElement;
  Memo1.Lines.Clear;
  AXmlNode.ChildNodes['Heading'].Text := 'XMLDocument: Reminder';
  Memo1.Lines.Add('Heading=' + AXmlNode.ChildNodes['Heading'].Text);
end;

procedure TForm1.btnEditNode2Click(Sender: TObject);
var
  ANewXmlNoteType, AOldXmlNoteType: IXMLNoteType;
begin
  ANewXmlNoteType := GetNote(Self.XMLDocument1);
  AOldXmlNoteType := LoadNote(ExtractFilePath(ParamStr(0)) + 'Email.xml');
  Memo1.Lines.Clear;
  ANewXmlNoteType.Heading := 'XMLDataBinding: Reminder';
  Memo1.Lines.Add('Heading=' + ANewXmlNoteType.Heading);
end;

procedure TForm1.btnAddNodeClick(Sender: TObject);
var
  ACurrXmlNode, ANewXmlNode: IXMLNode;
begin
  ACurrXmlNode := XMLDocument1.DocumentElement;
  ANewXmlNode := ACurrXmlNode.ChildNodes['From'].AddChild('Contact');
  ANewXmlNode.ChildNodes['Name'].NodeValue := '吴健';
  ANewXmlNode.ChildNodes['Email'].NodeValue := 'wujian_121@163.com';
  Memo2.Lines.Clear;
  XMLDocument1.Active := False;
  XMLDocument1.Active := True;
  Memo2.Lines.Assign(XMLDocument1.XML);
end;

procedure TForm1.btnDelNodeClick(Sender: TObject);
var
  AXmlNode: IXMLNode;
begin
  AXmlNode := XMLDocument1.DocumentElement;
  AXmlNode.ChildNodes['From'].ChildNodes.Delete('Contact');
  Memo2.Lines.Clear;
  XMLDocument1.Active := False;
  XMLDocument1.Active := True;
  Memo2.Lines.Assign(XMLDocument1.XML);
end;

procedure TForm1.btnViewXmlClick(Sender: TObject);
begin
  Memo2.Lines.Clear;
  XMLDocument1.Active := False;
  XMLDocument1.Active := True;
  Memo2.Lines.Assign(XMLDocument1.XML);
end;

end.

⌨️ 快捷键说明

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