admin 管理员组

文章数量: 1086019


2024年4月20日发(作者:splice会不会改变原数组)

理工科研 

基于Delphi的XML文件管理系统的设计 

詹百灵 

(漳州市第二技工学校福建・漳州363000) 

中图分类号:F719 文献标识码:A 

摘要本文介绍了利用Delphi开发一种适合初学者使用的 

xml编辑工具,让初学者能够很直观地看到XML的结构,进而学>--j 

XML语法。 

关键词xml xml编辑delphi 

匝 

黧 

谩DlgOpen.Execute THEN f}扪歼 

文章编号:1672—7894(2009)19—27_7—02 

ReadFile(DlgOpen.Filename); 

tshsouree.Caption:=dlgopen.FileName; 

pagecontro1.ActivePageIndex:=O; 

welForm::TwelcomeForm.Create(nil);//新建,调用新建文档向导 

对话框 

welform.Show; 

close;//退出 

ToFile(fname);//保存 

MmoSottree.CutToClipboard;//剪切 

MmoSource.CopyToClipboard;//复制 

MmoSource.PasteFromClipboard;//粘贴 

MmoSource.Undo;//撤销 

ifprintdialog1.Execute then//打印 

MmoSource.Pfint(printdialog1.Name) 

MmoSource.SeleetAU;//全选 

MmoSottree.ClearSeleetion;//删除 

,/切换视图窗口 

PageContro1.AetivePage:=PageContro1.Pages[index]; 

ifnddialog1.Execute;//查找对话框 

MmoSource.ClearUndo;『/重做 

’ ●●●●-’ 

点击“新建”按钮后,进入新建界面,该界面用于用户自行导人 

各类文档的模板。 

用户可以根据需要选择一种文档类型,按“确定”按钮后就可以 

打开相应的模板文件。同时系统还会提供一些帮助信息。这时系统 

会跳出一个信息框提示,建议用户先保存文件再使用其他视图功 

能。主要代码如下: 

,/根据需要加载相应文档的模板 

LoadFromFile(.exampleLxml_document 

XML’); 

FrmMain.pageeontro1.AetivePagelndex:=0;//新建文档时自动显示 

文本视图面板 

close;//关闭创建文档对话框 

,/弹出对话框提示用户保存文件 

messgaedlg(.对于新建的文件,请先保存再使用视图功能! , 

叙毛if.277 

I理工科研 

mlinformafion, 

【mby ̄],0); 

用户可以在文本视图中使用工具栏上的按钮对文档进行编辑, 

也可以使用菜单栏下的按钮进行相应的操作。如果原先文本视图 

里有内容,这时再按“新建”按钮,系统就会弹出一个是否保存文件 

对话框,让用户选择是否保存当前文件。如果用户选择“Yes”按钮, 

则会调用保存文件对话框。选择“No”按钮。系统直接显示创建文档 

对话框。点击“打开”按钮后,进入打开文件对话框,用户可以选择 

要打开的文件,按“打开”按钮生效。首次点击“保存”按钮,会调用 

保存文件对话框。非首次点击“保存”按钮,则系统会自动将新更改 

的内容保存到原文件中。相应代码如下: 

iffrmmain.MmoSource.Text<>“then 

b萌n//弹出对话框提示 

是否保存当前文件’,mtinformaifon, 

【mbyes,mbno]); 

iffrmmsg.ShowModal=id

_

yes then 

fl*mmain.savebnClick(sender); 

3.2树形视图模块设计 

如果要看树形视图,直接切换到树形视图面板或者点击工具栏 

上的“树形视图”按钮即可。 

当用户切换到树形视图面板时,系统就会自动分析当前的xml 

文档,并将其按树形显示在左边的树形显示区域,而窗口右上方显 

示当前选择节点的属性名称和对应的属性值,右下方显示当前节点 

的文本内容。关键代码如下: 

∥以下代码实现将xml文档转化为树结构 

TrvDoc.Items.BeginUpdate; 

TrvDoc.Items.Clear;, 

XmlParser.Normalize::TRUE; 

XmlParser.StartScan; 

ScanElement(NIL)/./提取xml的各种元素用树形结构表示出来 

TrvDoc.Items.EndUpdate; 

3.3内容视图模块设计 

如果要看内容视图,直接切换到内容视图面板或者点击菜单栏 

下的“内容视图”按钮即可。 

当用户切换到内容视图时,系统就会将当前xml文档的内容 

(包括文本、代码段)提取出来,并显示在内容视图面板上的内容视 

图区域。关键代码如下: 

Filename:=ExtractFilePath(Application.ExeName)+’Contents.txt’; 

AssignFile(£Ffienam ̄; . 

TRY 

Rewrite∞; 

TRY 

XmlParser.StartScan; 

XmlParser.Normalize:=FALSE: 

WHILE XlnlP85 ̄ser.Scan DO 

IF(XmlParser.CurPartType=ptContent)OR 

(XmlP ̄r.CurPartType=ptCData)THEN 

Write(£XmlParser.CurContent); 

FINALIjY 

CloseFfle(。; 

END; 

MmoContents.PlainText:=TRUE; 

MmoContents.Lines.LoadFromFile(Filename); 

EXCEPT 

Clear; 

278 叙毛c‘ 

END; 

DeleteFile(Filename); 

3.4 DTD结构视图模块设计 

如果要看DTD结构视图,直接切换到DTD结构视图面板或者 

点击菜单栏下的“DTD视图”按钮即可。 

当用户切换到DTD视图时,系统就会自动提取xml文档内部 

的DTD,对其结构进行分析。关键代码如下: 

TrvDtd.Items.BeginUpdate; 

TrvDtd.Items.Clear; 

XIILIP ̄r.Normalize:=TRUE; 

XmlParser.StartSean; 

WHII正Xm】Pal ̄er.Scan DO 

IF XmIP ̄er.CurPartType ptDtdc THEN 

BREAK; 

TrvDtd.Items.EndUpdate; 

3.5浏览器视图模块设计 

如果要看浏览器视图,直接切换到浏览器视图面板或者点击菜 

单栏下的“浏览器视图”按钮即可。 

当用户切换到浏览器试图时,系统就会将xml文档以浏览器浏 

览的方式显示出来。其实现原理就比较简单,只要加一个TWeb— 

Browser控件,再加如下代码就可以实现了: 

URL:widestring; 

b ̄gin 

URL:=tshsource.Caption; 

with webbrowserl do 

begin 

webbrowser1.Navigate(ur1); 

end;. 

4存在问题及对策 

该系统的xml解析功能比较完善,而编辑功能则相对比较欠 

缺,还有待改进。该系统开发的目的就是为了满足xml初学者用户 

的需求,帮助其在使用过程中尽快掌握xml的语法。基于此目的,若 

能在此系统的基础上在加上根据向导创建xml文档的功能,该系统 

会更加完善。该功能可利用TEdit、TMemo等控件以及一些提示框 

函数,让用户自定义xml元素的值(如encoding、standalone、命名空 

间、以及xml的元素和属性),将用户自定义的这些值传递给 

TXMLDocument控件里相应的参数,再通过TMemo控件或者 

TRiehedit控件将该xml文档显示出来。创建xml节点的过程可通过 

TTreeview控件来实现。先用Tl'reeview控件提供的方法和过程创建 

棵树。不同性质的节点(声明节点、DTD节点、元素节点、文本节 

点、注释节点等)可用imagelndex属性区分,再将该树转化为xml文 

档。而这些过程对用户来说是完全透明的,用户只要根据向导提 

示,输入相应的值,就能够创建xml文档了酮。 

参考文献 

【1]顾兵,等.XML实用技术教程【M】 b京精华大学出版社,2007:1—15,246—257. 

[2]张银鹤胀秋香甜I鹿,等.XML实践教程 晾清华大学出版社2007_23—34. 

[3】Simon St.Laurent.XML基础教程(第二版)[M】.美国:SYBEX公司授权出版, 

20o0:3—9. 

【4]李存斌,陈芙杏,等.Delphi 2005程序设计及其应用开发【M】.北京:中国水利 

水电出版社,2005:1—19。73~219. 

『5马晓凯,5]郭志伟,刘颖.Delphi 2005编程思想与实例经典【M】.北京:冶金工业 

出版社,2005:23—32,334—367. 

【6】(美)Harold.XML宝典(第二版)【M】.马云,等,译.北京:中国电力出版社,2002: 

51—77,154—253. 

责任编辑黄修军 


本文标签: 视图 用户 文档 按钮 系统