天天看點

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 測試檔案, 才能有相同的傳回值}

//什麼是支節點與葉節點

{沒有找到權威的參考, 我的了解是:

包含其他标簽的節點是支節點; 不不包含其他标簽的就是葉節點; 文本節點不算也節點.

}

{譬如根節點下的第一個節點:

<人員 職務="科長" 備注="正局級">

<姓名>張三</姓名>

<性别>男</性别>

<年齡>34</年齡>

</人員>

"人員" 節點是支節點;

"姓名"、"性别"、"年齡" 節點是葉節點;

葉節點中的部分是文本節點.

//判斷是否是支節點

procedure TForm1.Button1Click(Sender: TObject);

node: IXMLNode;

node := XMLDocument1.DocumentElement.ChildNodes[0]; {這是"人員"節點}

if node.HasChildNodes and not node.IsTextElement then

ShowMessage('是支節點'); {是支節點}

//判斷是否是葉節點

procedure TForm1.Button2Click(Sender: TObject);

node := XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0]; {這是"姓名"節點}

if node.IsTextElement then

ShowMessage('是葉節點'); {是葉節點}

//判斷是否是文本節點

procedure TForm1.Button3Click(Sender: TObject);

node := XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[0];

{這是"張三"那個文本節點}

if node.NodeName='#text' then

ShowMessage('是文本節點'); {是文本節點}

//判斷是否是空節點

procedure TForm1.Button4Click(Sender: TObject);

node := XMLDocument1.DocumentElement.ChildNodes[4];

{這是根節點下的第五個節點: "輔助人員", xml 中設為空}

if not node.HasChildNodes then

ShowMessage('是空節點'); {是空節點}

end.

<a></a>

本文轉自黃聰部落格園部落格,原文連結:http://www.cnblogs.com/huangcong/archive/2010/08/27/1809937.html,如需轉載請自行聯系原作者