NativeXml (5):事件
NativeXml (5):事件
涂孟超 发表于3年前
NativeXml (5):事件
  • 发表于 3年前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, NativeXml{!};

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    procedure XmlEvent(Sender: TObject; ANode: TXmlNode); //TsdXmlNodeEvent 事件
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  xmlFile = 'C:\Temp\xml_test_files\CDATA_section.xml'; //测试文件

{测试 OnNodeNew 事件:开始载入节点时发生}
procedure TForm1.Button1Click(Sender: TObject);
var
  xml: TNativeXml;
begin
  Memo1.Clear;
  xml := TNativeXml.Create(nil);
  xml.OnNodeNew := XmlEvent;
  xml.LoadFromFile(xmlFile);
  xml.Free;
end;

{测试 OnNodeLoaded 事件:节点载入完成时发生}
procedure TForm1.Button2Click(Sender: TObject);
var
  xml: TNativeXml;
begin
  Memo1.Clear;
  xml := TNativeXml.Create(nil);
  xml.OnNodeLoaded := XmlEvent;
  xml.LoadFromFile(xmlFile);
  xml.Free;
end;

{将被调用的事件, OnNodeNew 和 OnNodeLoaded 事件的参数格式是一样的}
procedure TForm1.XmlEvent(Sender: TObject; ANode: TXmlNode);
var
  depth: string;
begin
  if ANode.ElementType = xeElement then         //xeElement 是 TsdElementType 枚举的类型之一
  begin
    depth := StringOfChar(#9, ANode.TreeDepth); //TreeDepth 是节点深度
    Memo1.Lines.Add(depth + ANode.Name);
  end;
end;

end.

共有 人打赏支持
粉丝 13
博文 2004
码字总数 14107
×
涂孟超
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: