天下网吧免费网吧游戏更新软件
免费超酷网吧建站系统酷吧平台
超强网吧游戏管理:网吧加游站
首 页
网吧焦点
网吧技术
地方频道
网吧方案
经营管理
网吧软件
网吧程序
网吧心声
网吧图库
杀狗意决:征集机器狗病毒样本
欢迎大家投稿,投稿的点这里吧
政策与经营
网吧技术
网游资讯
游戏更新情报
行业资讯
网吧心声
网吧程序学习
网游资料库
网吧系统
软件技术
硬件技术
网络技术
无盘技术
对比·更新
网络安全
行业资讯
Vista
广东
湖南
湖北
福建
广西
江苏
山东
四川
北京
硬件配机方案
网络结构方案
软件系统方案
无盘方案中心
整体方案
游戏管理方案
网吧政策
网吧经营
网吧展示
网吧配机
产品评测
产品导购
最新动态
配机展示
本站原创
其它软件
游戏菜单
网吧工具
网吧常用
游戏相关
商业软件
网吧系统
各类教程
批处理学习
Delphi教程
VB教程
C语言相关
计算机英语
其它语言
网管心声
网管轶事
网吧闲事琐谈
网吧闲谈区
推荐网吧
系统桌面
机器效果
环境设施
网吧软件
您现在的位置:
天下网吧
>>
网吧焦点
>>
网吧程序学习
>>
Delphi学习
>>
提高篇
>> 正文
进论坛交流
Delphi操作xml
[
作者:
佚名
来源:
来自网络
时间:
2008-11-7
QQ书签
]
【
我来说两句
大
中
小
】
Delphi7 支持对XML文档的操作,可以通过TXMLDocument类来实现对XML文档的读写。可以利用TXMLDocument把XML文档读到内存中,从而可以进行编辑、保存操作。TXMLDocument类是通过DOM(文档对象模型)接口来访问XML文档中的各个元素的。对于DOM接口的实现有多种方式,Delphi支持的方式有:1)微软的MSXML SDK,这种方式是通过COM对象来实现;2) Apache 的Xerces的实现方式;3)另外一种是开源OpenXML实现方式。对于不同的接口实现方式可以通过设定TXMLDocument的DOMVender来进行控制。
支持XML的Delphi单元主要存在与…\Borland\Delphi7\Source\Xml目录下,主要包括:XMLIntf,XMLDoc,xmldom,msxmldom,xercesxmldom,xdom,oxmldom等单元。
l XMLIntf――包括了Borland自己定义的XML文档的接口;
l XMLDoc――是对XMLIntf中所定义接口的Borland实现;
l Xmldom――定义了DOM(文档对象模型)接口,这里对DOM接口进行了Borland的实现;
l Msxmldom――实现微软对Xmldom中定义的接口的实现,主要调用微软的COM对象来实现,对Xmldom中定义接口的封装;
l Xercesxmldom――Borland通过Xerces XML DOM方式来实现对Xmldom中定义接口的封装;
l Oxmldom――Borland通过使用OpenXML来实现对Xmldom中定义接口的封装;
TXMLDocument类的属性,请参考Borland的帮助文件;
读写XML文档
l 读取XML文档
通常情况下不通过直接使用TXMLDocument对象来进行XML文件的读取,而是使用XMLDoc单元中提供的几个有用的函数来读取XML文档,这些函数包括:
function LoadXMLDocument(const FileName: DOMString): IXMLDocument;
function LoadXMLData(const XMLData: DOMString): IXMLDocument; overload;
function LoadXMLData(const XMLData: string): IXMLDocument; overload;
function NewXMLDocument(Version: DOMString = '1.0'): IXMLDocument;
可以看出这些函数全部返回的是IXMLDocument接口,得到了IXMLDocument接口在进行文档的操作;
这些函数都是通过创建TXMLDocument对象来实现对XML文档的读取的;其中NewXMLDocument仅仅创建一个IXMLDocument接口。
可以这样利用NewXMLDocument来读取XML文档:
XMLDoc := NewXMLDocument;
XMLDoc.LoadFromFile(FileName);
l 保存XML文档
可以通过下面的方式来保存XML文档:
XMLDoc := NewXMLDocument;
iRoot := IXMLDoc.CreateNode(‘TestXMLDocument’);
XMLDoc.DocumentElement := iRoot;
…
XMLDoc.SaveToFile(FileName);
可以看出通过接口来操作XML文档是非常方便的;
选用不同类型的XML解析方式
上面已经提到有三种方式实现DOM,也就是可以应用Borland提供的3种不同的XML解析器来对XML文档进行解析;
l 三种解析器
1、微软的解析器(MSXML SDK)
微软解析器主要应用在Windows中,在安装MSXML SDK的时候会安装解析器,同时IE浏览器也提供了解析器,这个解析器是一个COM。
2、Apache的Xerces解析器
Borland自己实现了一个Xerces解析器,这个可以通过调用xercesxmldom.dll模块来实现;如果使用这个解析器可能需要同应用程序一起进行分发xercesxmldom.dll,XercesLib.dll,CC3260MT.DLL三个DLL文件
3、OpenXML解析器
这个解析器的源代码存在于xdom.pas单元中,这个可以通过
http://www.philo.de/xml/进行跟新下载,这个是一个德国人写的XML解析器;
l 使用不同解析器的比较
对于三种方式的解析器比较如下:
1、微软的解析器
微软的解析器当然好了,但是也不能排除存在的意外情况,在我个人的经验中,至少我们公司对于XML解析的方式,只有在IE6.0以上的版本才能够正常的工作;
至于,Borland同样是通过引入MSXML.DLL的接口来实现的,所以可以推理出,同样存在同样的问题;这个通过研究TMSDOMImplementation(msxmldom单元中)的实现方式可以得到证明,实现的过程中通过调用CoCreateInstance函数接口来实现解析的;
在发布解析XML的代码的时候可能就会存在由于IE的本版的不同,需要把IE6.0一同发布,比较麻烦;
2、Borland的Xerces解析器
这种方式的解析器是通过 LoadLibrary(PChar(LibName));函数,LibName的内容是xercesxmldom.dll(Windows平台),libxercesxmldom.so.1(Linux平台)。那么就需要随同应用程序一起发布的Dll,就包括了xercesxmldom.dll,XercesLib.dll,CC3260MT.DLL;
这个发布相对于发布不同版本的IE6.0来说要相对简单一些;
3、OpenXML解析器
由于存在xdom.pas单元,这个单元中包含了完全的XML解析的源代码,那么应用这种方式,可以避免软件发布的种种问题,这是由于解析的代码被静态编译在应用程序内部。唯一不好的地方就是应用程序的体积可能要大一些;
l 如何使用不同的解析器
我们可以写一个函数来使用不同的解析器;
function NewDiffXmlDocument(DOMVender: string;
Version: DOMString = '1.0'): IXMLDocument;
var
XMLDoc : TXMLDocument;
begin
XMLDoc := TXMLDocument.Create(nil);
XMLDoc.DOMVendor := GetDOMVendor(DOMVender);
Result := XMLDoc;
Result.Active := True;
if Version <> '' then
Result.Version := Version;
end;
其中DOMVender如果用Borland提供的三种方式进行解析的话,分别取值是:
Microsoft――存在于msxmldom.pas单元中的SMSXML常量;
Xerces――存在于xercesxmldom .pas单元中的SXercesXML常量;
OpenXML――存在于oxmldom.pas单元中的SOpenXML常量;
这个是由于在msxmldom,xercesxmldom,oxmldom三个单元的initailization部分,都通过调用RegisterDOMVendor函数,注册了不同的解析器接口;
当然,Borland同样提供了一种可以灵活进行扩展的机制来扩展用户自己的解析器,这个需要继承,TDOMVendor类(存在于xmldom单元中)。实际上,Borland自己就是通过这种方式来实现不同方式解析器的;具体的实现过程可以通过参考oxmldom单元中对xdom的封装;
结论
Delphi作为一个成功的开发工具,它自身实现的对XML的支持,肯定比网络上某些实现要稳定、高效的多,我们没有必要再进行另外的封装什么MSXML.DLL的COM接口。当然,可以自己实现不同的XML解析器,也可以应用已经存在的解析器。同时,可以看出Delphi对于XML的支持也是非常完善的。
上一篇文章:
用ListView控件列举目录中的文件
下一篇文章:
Delphi实现网页采集
收藏操作:
相关文章
Delphi在Vista下读取注册表
Delphi开发能力自我评测
Delphi实现网页采集
delphi编写提取exe文件的ICO图标
delphi 如何快速读取文本文件
用Delphi开发简单的WebMail程序
本栏目最新推荐
此栏目下没有推荐文章
我来说两句
数据载入中,请稍后……
·请遵守《
互联网电子公告服务管理规定
》及中华人民共和国其他各项有关法律法规。
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任。
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据。
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为。
操作
【
发表评论
】【
加入收藏
】【
告诉好友
】【
打印此文
】【
关闭窗口
】
声明
本文来源地址:
http://school.cfan.com.cn/pro/delphi/
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系邮箱:support@txwb.com.
天下网吧·网吧天下
推荐文章
不安装/不修改文件 让XP轻松变成
这年头,冒牌的东西是越来越多,冒充名牌的衣服、鞋子、手表、化妆品、电器、电子产品……
壁纸魔术师,打造网吧带公告、天
软件名称:网吧壁纸魔术师 V1.1 Bulid 1106软件性质:免费,绿色,无……
不安装/不修改文件 让XP轻松变成Vi
壁纸魔术师,打造网吧带公告、天气
打造自己的XP客户端的登录界面
在职网管谈一个网吧网管的过去与将
网吧经营经验:别盲目跟风
天下网吧收集最新实力精华贴
巧妙整理磁盘空间如此简单
各位网吧网管有MM向你们告白过吗?
玩转虚拟机 VMware实用技巧六则
WinRAR另类技巧十三则
网吧多功能呼叫器(易语言源码)
多年经验:网吧技术网管应会些什么
最新文章
用Delphi编写圆周率模拟器[1]
圆周率π是个古老的东西,早在1700多年前祖冲之已将其值精确到小数……
Delphi下“培养”自己的简单木马
刚学电脑时很喜欢网络安全,看着高手们写的一个又一个攻击工具,自己也……
带商品销售管理的简单实用网吧呼叫管理
[DNF]关于游戏无法登陆的网吧、玩家更新
Delphi在Vista下读取注册表
Delphi开发能力自我评测
Delphi实现网页采集
Delphi操作xml
用ListView控件列举目录中的文件
给MenuItem中添加Image
delphi编写提取exe文件的ICO图标
delphi 如何快速读取文本文件
用Delphi开发简单的WebMail程序
Delphi中如何取得系统支持的颜色数
Delphi用拼音首字符序列实现检索功能
DELPHI的奇异菜单的编写
本周热门
本月热门
阅读排行
本人做网吧网管三个月遇到的客人
我做网吧网管生涯最尴尬的一幕!
[求助]如果你们遇到这情况怎么回答
[讨论]大家来秀丽下网吧桌面
Delphi在Vista下读取注册表
Delphi开发能力自我评测
Delphi实现网页采集
Delphi操作xml
用ListView控件列举目录中的文件
给MenuItem中添加Image
delphi编写提取exe文件的ICO图标
delphi 如何快速读取文本文件
用Delphi开发简单的WebMail程序
Delphi中如何取得系统支持的颜色数
看看95年时网吧都用啥机器
[调查]今天你的电脑黑屏了吗?
网管大家有想过老爸老妈吗?
网管 你打开电脑第一件事是?
[讨论]10年以后的网吧会是怎样的?
服务器测试流程,各位高人不要喷我!
本人做网吧网管三个月遇到的客人
在你闲暇的时候会帮客人买东西吗?
同行调查:你为什么当网管?
天下网吧最近实用潜力贴索引整理
我做网吧网管生涯最尴尬的一幕!
IP修改器,源码开源
[求助]如果你们遇到这情况怎么回答
XP|2003 注册表启动项管理 有顶就开
免费、漂亮、快速、强大、穿还原的
天下网吧游戏更新情报站-最权威的游
天下网吧游戏更新情报站-最权威的游
动手打造网吧系统完美桌面(具体制
XP超级母盘制作流程
网吧最全的Logo1和ARP防御解决方案
免费能免疫机器狗可指定穿透程序的
自己看这个图不错做个万象图让大家
网吧网管常用小工具及教程 !
详细的万象皮肤制作全过程(附工具)
详细的万象锁定界面制作全过程(附工
最新网吧机配置单
冰点还原网络版.有图片教程
我给老板策划的网吧圣诞节活动方案
关于天下
|
联系方式
|
版权声明
|
免责条款
|
隐私保护
|
申请友情链接
|
更多友情链接
|
网络收藏夹
天下网吧,网吧天下.Copy.Txwb.com 2008-2010 网吧资讯,网吧新闻,网吧软件,网吧技术,网吧无盘,网吧经营,网吧管理,网吧联盟。