XML(eXtensible Markup Language可擴展標志語言)在近幾年的信息類雜志、網站上可謂是最搶眼的一詞。大大小小的信息產品都爭相和它搭上關系,唯恐趕不及這輛快車。有著良好口碑的寶藍 (Borland)系列開發平台也不例外,從6.0版開始就集成了XML組件包,因其使用MSXMLDom解析器,相比於此前廣泛應用的XMLParser解析器,MSXMLDom更顯規范、中文兼容性更好(元素名、屬性名均支持中文),很受開發者青睐。為幫助初學者快速掌握Delphi中的XML編程,筆者特寫此文,以供交流。
筆者通過一個讀寫XML文件的實例來說明XML編程的各個步驟,只需讀者有結點、元素、屬性的基本概念就能容易的理解本文。筆者所要讀入的XML文件結構如下所示,命名為Input.XML。
<?XML version="1.0" encoding="GB2312"?>
<學生花名冊>
<學生 性別 = "男">
<姓名>李華</姓名>
<年齡>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的