程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi中的XML編程簡析(2)

Delphi中的XML編程簡析(2)

編輯:Delphi

為了讀寫,我們需要放置兩個TXMLDocument控件,在Delphi VCL面板的Internet標簽頁裡那個標有XML字樣的控件就是,當然此控件也可以動態創建,但需要包含必要的文件,這裡為簡單起見,我們直接放置在窗體上,分別命名為InXMLDoc和OutXMLDoc,InXMLDoc用於調入Input.xml文件,OutXMLDoc用於暫存輸出到Output.XML的文檔。

在窗體上放個按鈕,我們把測試代碼直接放置在按鈕的單擊事件裡。先定義幾個變量,用來保存臨時信息,如下所示:

Root : IXMLNode; //指向XML根結點
Parent_Node: IXMLNode; //指向學生結點
Child_node : IXMLNode; //指向學生的子結點
Student : TStudent; //存單個學生信息
List : TList; //存學生列表
i : integer; //循環變量

我們先來讀入XML文件,代碼如下:

List := TList.Create; //初始化列表
InXMLDoc.LoadFromFile('Input.xml'); //調入Input.XML文件
Root := InXMLDoc.DocumentElement; //取XML文件的根結點,即“<學生花名冊>”
Parent_Node := Root.ChildNodes.First; //使Parent_Node指向學生結點
while (Parent_Node <> nil) do //循環取多個學生,可再多加幾個學生信息測試
begin
if (Parent_Node.NodeName = '學生') then //判斷是否為學生結點
begin
Student := TStudent.Create; //新建一個學生的結構信息
Student.sex := Parent_Node.Attributes['性別']; //取學生的性別屬性
Child_Node := Parent_Node.ChildNodes.First;
//使Child_Node指向該學生的第一個子結點信息
while (Child_Node <> nil) do //循環取學生的各個子各點
begin
if (Child_Node.NodeName = '姓名') then //判斷是否為姓名結點
Student.name := Child_Node.Text //取姓名結點的值,取於name字段中
else if (Child_Node.NodeName = '年齡') then //此行起後四行與前兩行類似
Student.age := StrToInt(Child_Node.Text)
else if (Child_Node.NodeName = '電話') then
Student.phone := Child_Node.Text;
Child_Node := Child_Node.NextSibling; //順序取下一個學生的子結點信息
end;
List.Add(Student); //把一個學生信息加入列表
end;
Parent_Node := Parent_Node.NextSibling; //順序取下一個學生信息
end;

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