专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »PHP教程 » xmldocumentjava:Delphi 中的 XMLDocument 类详解(9) - 有关 HasChildNodes 和 IsTextElement »正文

xmldocumentjava:Delphi 中的 XMLDocument 类详解(9) - 有关 HasChildNodes 和 IsTextElement

来源: 发布时间:星期一, 2009年11月30日 浏览:0次 评论:0
unit Unit1; 
 
erface 
 
uses 
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
 Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls; 
 
type 
 TForm1 = (TForm) 
  XMLDocument1: TXMLDocument; 
  Button1: TButton; 
  Button2: TButton; 
  procedure FormCreate(Sender: TObject); 
  procedure Button1Click(Sender: TObject); 
  procedure Button2Click(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; 
 
 
//HasChildNodes: 判断是否包含子节点 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 node: IXMLNode; 
 b: Boolean; 
begin 
{我们从例子中拿出个节点, 譬如根节点下个节点: 
<人员 职务="科长" 备注="正局级">
 
 <姓名>张 3</姓名>
 
 <性别>男</性别>
 
 <年龄>34</年龄>
 
</人员> 
} 
 {先用节点对象获取这个节点} 
 node := XMLDocument1.DocumentElement.ChildNodes[0]; 
 
 {这个节点当然包含子节点, 并且是包含 3 个子节点} 
 b := node.HasChildNodes; 
 ShowMessage(BoolToStr(b));          {-1; 也就是 True} 
 ShowMessage(IntToStr(node.ChildNodes.Count)); {3} 
 ShowMessage(node.NodeName);          {人员} 
 
 
{再看其中"姓名"节点: 
<姓名>张 3</姓名>
 
} 
 {先用节点对象获取这个节点} 
 node := XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0]; 
 b := node.HasChildNodes; 
 ShowMessage(BoolToStr(b));          {-1; 也就是 True} 
 ShowMessage(IntToStr(node.ChildNodes.Count)); {1} 
 ShowMessage(node.NodeName);          {姓名} 
 {它里面只有文本"张 3", 没有标签, 这时节点才有 Text 属性} 
 ShowMessage(node.Text); {张 3} 
 
 {获取"张 3"这个文本节点} 
 node := XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[0]; 
 b := node.HasChildNodes; 
 ShowMessage(BoolToStr(b));          {0; 也就是 False 没有子节点了} 
 ShowMessage(IntToStr(node.ChildNodes.Count)); {0; 子节点总数是 0} 
 ShowMessage(node.NodeName);          {#text; 介绍说明它是个文本节点} 
 ShowMessage(node.NodeValue);         {张 3; 我们也可以取出它值} 
 
 {文本节点 NodeValue 属性等同于它上层节点 Text 属性} 
 ShowMessage(node.ParentNode.Text);      {张 3} 
end; 
 
 
//IsTextElement: 判断是否是否具有 Text 属性 
procedure TForm1.Button2Click(Sender: TObject); 
var 
 node: IXMLNode; 
 b: Boolean; 
begin 
{我们从例子中拿出个节点, 譬如根节点下个节点: 
<人员 职务="科长" 备注="正局级">
 
 <姓名>张 3</姓名>
 
 <性别>男</性别>
 
 <年龄>34</年龄>
 
</人员> 
} 
 {先用节点对象获取这个节点} 
 node := XMLDocument1.DocumentElement.ChildNodes[0]; 
 
 {这个节点肯定没有 Text 属性} 
 b := node.IsTextElement; 
 ShowMessage(BoolToStr(b));          {0; 也就是 False} 
 ShowMessage(node.NodeName);          {人员} 
 
 
 {"姓名"节点} 
 node := XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0]; 
 
 {"姓名"节点有 Text 属性} 
 b := node.IsTextElement; 
 ShowMessage(BoolToStr(b));          {-1; 也就是 True} 
 ShowMessage(node.NodeName);          {姓名} 
 
 {"张 3"这个文本节点} 
 node := XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[0]; 
 
 {文本节点没有 Text 属性} 
 b := node.IsTextElement; 
 ShowMessage(BoolToStr(b));          {0; 也就是 False} 
 ShowMessage(node.NodeName);          {#text} 
end; 
 
end. 


标签:xmldocumentjava
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: