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 .
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