亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 簡析xml.txt

?? 在delphi中使用xml文檔的方法
?? TXT
字號:
簡析Delphi中的XML編程  
 

XML(eXtensible Markup Language可擴展標志語言)在近幾年的信息類雜志、網站上可謂是最搶眼的一詞。大大小小的信息產品都爭相和它搭上關系,唯恐趕不及這輛快車。有著良好口碑的寶藍 
(Borland)系列開發平臺也不例外,從6.0版開始就集成了XML組件包,因其使用MSXMLDom解析器,相比于此前廣泛應用的XMLParser解析器,MSXMLDom更顯規范、中文兼容性更好(元素名、屬性名均支持中文),很受開發者青睞。為幫助初學者快速掌握Delphi中的XML編程,筆者特寫此文,以供交流。

筆者通過一個讀寫XML文件的實例來說明XML編程的各個步驟,只需讀者有結點、元素、屬性的基本概念就能容易的理解本文。筆者所要讀入的XML文件結構如下所示,命名為Input.xml。



<學生花名冊>

<學生 性別 = "男">

<姓名>李華 

<年齡>14

<電話>6287555



<學生 性別 = "男">

<姓名>張三

<年齡>16

<電話>8273425





Input.xml文件的第一行是XML的版本說明,屬性encoding宣告使用何種字符集建立,默認以Unicode 編碼(UTF-8 或UTF-16),這里用中文GB2312碼。第二行“<學生花名冊>“是根元素。下面定義了兩個學生元素,學生下面嵌套了三個子元素,是對學生的進一步說明。與之相對應的,我們在Delphi中定義如下的學生數據結構,"//"后面的文字是對變量或語句的說明,下同。

TStudent = class {學生}

sex : string; //學生性別

name : string; //學生姓名

age : integer; //學生年齡

phone: string; //電話號碼

end;

為了讀寫,我們需要放置兩個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; 

到這兒,所有的學生信息都已存到List列表里面了,讀者可以跟蹤代碼測試。


下面我們把List里的臨時學生信息存到Output.xml文件里,代碼如下: 

OutXMLDoc.Active := true; //激活OutXMLDoc,自動初始化空的XML文檔

OutXMLDoc.Encoding := 'GB2312'; //設置字符集

Root := OutXMLDoc.AddChild('學生花名冊'); //建根結點

for i := 0 to List.Count - 1 do //循環取各個學生信息

begin

Student := List.Items[i]; //順序取一個學生信息

if (Student <> nil) then

begin

Parent_Node := Root.AddChild('學生'); //根結點后添加一個學生結點

Parent_Node.Attributes['性別'] := Student.sex; //給學生結點設置性別屬性 

Child_Node := Parent_Node.AddChild('姓名'); //學生結點后添加一個姓名結點

Child_Node.Text := Student.name; //設置姓名的文本值 

Child_Node := Parent_Node.AddChild('年齡'); //此行起后四行與前兩行類似

Child_Node.Text := IntToStr(Student.age); 

Child_Node := Parent_Node.AddChild('電話');

Child_Node.Text := Student.phone;

end;

end;

OutXMLDoc.SaveToFile('Output.xml'); //把組織好的XML文檔存于Output.xml文件中

OutXMLDoc.Active := false; //鈍化(關閉)OutXMLDoc 

List.Free; //最后釋放保存臨時學生信息的列表


好了,看看Input.xml和Output.xml內容是不是一樣。是不是很簡單呢?其實在C++ Builder也有相同的組件,只需將Pascal語法轉換成C++語法,上面的代碼就完全可以用了。有興趣的朋友可與筆者進一步交流其它XML應用以及程序設計模式、J2EE開發、Rose UML建模等知識,記住我的E-Mail:nbDeveloper@hotmail.com。 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡一区在线观看| 日韩一区精品字幕| 国产精品丝袜91| 亚洲女人****多毛耸耸8| 一区av在线播放| 日本欧美韩国一区三区| 国产99久久精品| 欧美这里有精品| 久久综合九色综合久久久精品综合 | 久久国产精品区| 成人爽a毛片一区二区免费| 色综合一区二区| 在线播放日韩导航| 一区精品在线播放| 麻豆传媒一区二区三区| 日本精品一区二区三区高清| 欧美一级黄色大片| 亚洲永久精品国产| 99久久夜色精品国产网站| 日韩三级中文字幕| 大胆亚洲人体视频| 精品国产凹凸成av人导航| 亚洲综合免费观看高清完整版| 久久99久久久久| 69堂成人精品免费视频| 亚洲免费毛片网站| 91搞黄在线观看| 亚洲黄网站在线观看| 91国产精品成人| 亚洲国产精品麻豆| 欧美日本在线播放| 黄色精品一二区| 中日韩av电影| 欧美日韩在线一区二区| 亚洲午夜久久久| 6080午夜不卡| 国产老妇另类xxxxx| 久久久久久久久久久黄色| 国产1区2区3区精品美女| 一区免费观看视频| 91精品在线免费| 成人av在线一区二区| 亚洲一区av在线| 国产日韩欧美精品在线| 一本大道av一区二区在线播放| 亚洲影院免费观看| 国产欧美一区在线| 91.麻豆视频| 99视频精品全部免费在线| 天堂av在线一区| 国产精品乱码久久久久久| 337p亚洲精品色噜噜狠狠| 大胆欧美人体老妇| 国内精品久久久久影院薰衣草| 亚洲免费资源在线播放| 久久久久97国产精华液好用吗| 欧美三级韩国三级日本三斤| 成人av动漫在线| 狠狠狠色丁香婷婷综合激情 | 亚洲成人黄色影院| 一区二区激情视频| 亚洲免费av观看| 亚洲精品免费在线| 一区二区不卡在线播放 | 日韩写真欧美这视频| 欧美精品久久一区二区三区| 欧美亚日韩国产aⅴ精品中极品| 成av人片一区二区| 在线视频国内自拍亚洲视频| 日本高清不卡视频| 欧美亚洲禁片免费| 欧美高清www午色夜在线视频| 精品视频一区 二区 三区| 欧美日韩精品综合在线| 91麻豆精品国产91久久久久久久久 | 亚洲第一久久影院| 国内外成人在线| 成av人片一区二区| 欧美日韩亚洲综合在线| 久久久影院官网| 日韩美女久久久| 久久99国产精品麻豆| 不卡电影免费在线播放一区| 色综合久久久网| 日韩色视频在线观看| 亚洲欧美偷拍另类a∨色屁股| 亚洲网友自拍偷拍| 国产成人精品在线看| 欧美日韩精品高清| 国产精品久久久久9999吃药| 人人精品人人爱| av网站免费线看精品| 日韩一区二区三区在线| 一区二区三区在线高清| 成人免费毛片片v| 欧美xfplay| 日本一区中文字幕| 欧美色成人综合| 亚洲图片一区二区| 日本高清不卡视频| 一区二区日韩av| 欧美日韩一卡二卡| 亚洲成a人片综合在线| 欧美影院午夜播放| 夜夜精品浪潮av一区二区三区| 国产盗摄一区二区| 国产精品久久久久毛片软件| 91在线高清观看| 亚洲福利视频三区| 欧美一级淫片007| 国产美女视频一区| 亚洲男同1069视频| 欧美高清激情brazzers| 精品一区二区三区在线播放| 精品国产99国产精品| 99精品视频一区二区| 日韩激情视频在线观看| 国产日韩视频一区二区三区| 在线观看不卡一区| 韩国成人精品a∨在线观看| 国产精品丝袜黑色高跟| 欧美精品成人一区二区三区四区| 男男成人高潮片免费网站| 中文字幕在线视频一区| 欧美肥妇毛茸茸| 91免费观看视频在线| 国产成人欧美日韩在线电影| 亚洲综合小说图片| 日本一区二区在线不卡| 日韩欧美在线观看一区二区三区| aaa国产一区| 国产成人自拍在线| 国产原创一区二区三区| 日韩激情av在线| 亚洲成人激情综合网| 亚洲精品国产高清久久伦理二区| 精品欧美一区二区久久| 日韩欧美在线综合网| 欧美日韩不卡一区| 欧美精品三级在线观看| 欧美日本一区二区三区| 欧美日韩视频在线第一区| 欧洲精品一区二区| 欧美中文字幕一区二区三区亚洲| 欧美亚洲一区二区三区四区| 欧美三级电影精品| 91精品国产一区二区| 欧美美女bb生活片| 日韩欧美不卡一区| 久久久久免费观看| 亚洲日本va午夜在线影院| 一区二区三区日韩精品视频| 一区二区久久久久| 奇米在线7777在线精品| 粉嫩欧美一区二区三区高清影视| av午夜一区麻豆| 日韩免费视频一区| 亚洲色图制服丝袜| 美女网站在线免费欧美精品| 韩国成人精品a∨在线观看| 成人国产精品免费| 欧美一区二区视频网站| 国产亚洲精品aa午夜观看| 亚洲综合另类小说| 国产91在线观看| 精品成人一区二区三区| 一区二区三区欧美亚洲| 韩日欧美一区二区三区| 在线观看视频91| 一区在线观看视频| 精品一区二区三区香蕉蜜桃 | 成人免费av网站| 欧美电视剧免费全集观看| 国产精品高潮呻吟| 成人午夜激情片| 欧美国产1区2区| 国产不卡免费视频| 久久久一区二区三区| 国产在线视视频有精品| 制服丝袜亚洲色图| 亚洲国产sm捆绑调教视频 | 精品亚洲免费视频| 欧美日韩高清不卡| 日韩黄色小视频| 久久亚洲一级片| 99视频热这里只有精品免费| 国产精品成人免费在线| 色综合久久综合网97色综合| 国产精品毛片高清在线完整版| 白白色 亚洲乱淫| 亚洲妇熟xx妇色黄| 日韩视频在线你懂得| 国产精品99精品久久免费| 国产精品久久久99| 欧美日韩中文一区| 懂色av中文字幕一区二区三区| 国产精品狼人久久影院观看方式| 99久久99久久综合| 青青草成人在线观看| 亚洲欧美日韩综合aⅴ视频|