天天看點

Delphi 中的 XMLDocument 類詳解(5) - 擷取元素内容

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

//通路第一個人的資訊

procedure TForm1.Button1Click(Sender: TObject);

ShowMessage(XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes['姓名'].Text); {張三}

ShowMessage(XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes['性别'].Text); {男}

ShowMessage(XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes['年齡'].Text); {34}

{可以通過位置通路子節點, 如: ChildNodes[0] 表示子節點清單中的第一個元素}

{可以通過子節點名通路子節點, 如: ChildNodes['姓名']}

{但在節點名一樣的情況下, 隻能通過位置通路}

{任何情況下都可以通過位置通路, 譬如:}

ShowMessage(XMLDocument1.DocumentElement.ChildNodes[0].ChildNodes[0].Text); {張三}

//通路第二個人的資訊

procedure TForm1.Button2Click(Sender: TObject);

nodeList: IXMLNodeList;

node: IXMLNode;

nodeList := XMLDocument1.DocumentElement.ChildNodes;

node := nodeList[1];

ShowMessage(node.ChildNodes['姓名'].Text); {李四}

ShowMessage(node.ChildNodes['性别'].Text); {女}

ShowMessage(node.ChildNodes['年齡'].Text); {43}

//擷取所有成員姓名

procedure TForm1.Button3Click(Sender: TObject);

num,i: Integer;

num := nodeList.Count;

for i := 0 to num - 1 do

node := nodeList[i];

ShowMessage(node.ChildNodes['姓名'].Text); {會分别顯示: 張三 李四 王五 孫六}

//擷取所有成員年齡

procedure TForm1.Button4Click(Sender: TObject);

ShowMessage(node.ChildValues['年齡']); {會分别顯示: 34 43 25 52}

end.

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