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.
责任编辑黄修军
版权声明:本文标题:基于Delphi的XML文件管理系统的设计 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713564600a640983.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论