程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi 中的 XMLDocument 類詳解(9) - 關於 HasChildNodes 與 I

Delphi 中的 XMLDocument 類詳解(9) - 關於 HasChildNodes 與 I

編輯:Delphi

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; 
  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 
{我們從例子中拿出一個節點, 譬如根節點下的第一個節點: 
<人員 職務="科長" 備注="正局級">
 
 <姓名>張三</姓名>
 
 <性別>男</性別>
 
 <年齡>34</年齡>
 
</人員> 
} 
 {先用節點對象獲取這個節點} 
 node := XMLDocument1.DocumentElement.ChildNodes[0]; 
 
 {這個節點當然包含子節點, 並且是包含 3 個子節點} 
 b := node.HasChildNodes; 
 ShowMessage(BoolToStr(b));          {-1; 也就是 True} 
 ShowMessage(IntToStr(node.ChildNodes.Count)); {3} 
 ShowMessage(node.NodeName);          {人員} 
 
 
{再看其中的"姓名"節點: 
<姓名>張三</姓名>
 
} 
 {先用節點對象獲取這個節點} 
 node := XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0]; 
 b := node.HasChildNodes; 
 ShowMessage(BoolToStr(b));          {-1; 也就是 True} 
 ShowMessage(IntToStr(node.ChildNodes.Count)); {1} 
 ShowMessage(node.NodeName);          {姓名} 
 {它裡面只有文本"張三", 沒有標簽, 這時的節點才有 Text 屬性} 
 ShowMessage(node.Text); {張三} 
 
 {獲取"張三"這個文本節點} 
 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);         {張三; 我們也可以取出它的值} 
 
 {文本節點的 NodeValue 屬性等同於它上層節點的 Text 屬性} 
 ShowMessage(node.ParentNode.Text);      {張三} 
end; 
 
 
//IsTextElement: 判斷是否是否具有 Text 屬性 
procedure TForm1.Button2Click(Sender: TObject); 
var 
 node: IXMLNode; 
 b: Boolean; 
begin 
{我們從例子中拿出一個節點, 譬如根節點下的第一個節點: 
<人員 職務="科長" 備注="正局級">
 
 <姓名>張三</姓名>
 
 <性別>男</性別>
 
 <年齡>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);          {姓名} 
 
 {"張三"這個文本節點} 
 node := XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[0]; 
 
 {文本節點沒有 Text 屬性} 
 b := node.IsTextElement; 
 ShowMessage(BoolToStr(b));          {0; 也就是 False} 
 ShowMessage(node.NodeName);          {#text} 
end; 
 
end. 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved