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,如需轉載請自行聯系原作者