• 黄聪:Delphi 中的 XMLDocument 类详解(10) 判断节点类型: 支节点、叶节点、文本节点、空节点


    unit Unit1;

    interface

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

    type
    TForm1
    = class(TForm)
    XMLDocument1: TXMLDocument;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    //打开

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    XMLDocument1.LoadFromFile(
    'c:\temp\test.xml');
    {必须用万一提供的 xml 测试文件, 才能有相同的返回值}
    end;


    //什么是支节点与叶节点

    {没有找到权威的参考, 我的理解是:
    包含其他标签的节点是支节点; 不不包含其他标签的就是叶节点; 文本节点不算也节点.
    }
    {譬如根节点下的第一个节点:
    <人员 职务="科长" 备注="正局级">

    <姓名>张三</姓名>

    <性别>男</性别>

    <年龄>34</年龄>

    </人员>

    "人员" 节点是支节点;
    "姓名"、"性别"、"年龄" 节点是叶节点;
    叶节点中的部分是文本节点.
    }


    //判断是否是支节点
    procedure TForm1.Button1Click(Sender: TObject);
    var
    node: IXMLNode;
    begin
    node :
    = XMLDocument1.DocumentElement.ChildNodes[0]; {这是"人员"节点}

    if node.HasChildNodes and not node.IsTextElement then
    ShowMessage(
    '是支节点'); {是支节点}
    end;


    //判断是否是叶节点
    procedure TForm1.Button2Click(Sender: TObject);
    var
    node: IXMLNode;
    begin
    node :
    = XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0]; {这是"姓名"节点}

    if node.IsTextElement then
    ShowMessage(
    '是叶节点'); {是叶节点}
    end;


    //判断是否是文本节点
    procedure TForm1.Button3Click(Sender: TObject);
    var
    node: IXMLNode;
    begin
    node :
    = XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[0];
    {这是"张三"那个文本节点}

    if node.NodeName='#text' then
    ShowMessage(
    '是文本节点'); {是文本节点}
    end;


    //判断是否是空节点
    procedure TForm1.Button4Click(Sender: TObject);
    var
    node: IXMLNode;
    begin
    node :
    = XMLDocument1.DocumentElement.ChildNodes[4];
    {这是根节点下的第五个节点: "辅助人员", xml 中设为空}

    if not node.HasChildNodes then
    ShowMessage(
    '是空节点'); {是空节点}
    end;

    end.

    出处:http://www.cnblogs.com/del/archive/2008/01/03/1024729.html

  • 相关阅读:
    dedecms5.7百度主动推送(实时) 开发
    胆囊结石食物选择
    读《遥远的救世主》与观看电视剧天道
    cnn健康增胖和调理好身体
    Machine-wide Progress Telerik Fiddler installation has been found at ...Please, use that one or uninstall it ...
    鼻炎治疗之路(转载)
    学医后才知道的小知识...
    一点浩然气,千里快哉风(修炼孟子浩然之气)
    孟尝君的逆袭
    张小龙和张一鸣的对立统一
  • 原文地址:https://www.cnblogs.com/huangcong/p/1809937.html
Copyright © 2020-2023  润新知