Delphi操作xml-Delphi-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝27
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:134回复:0

Delphi操作xml

楼主#
更多 发布于:2016-06-11 14:06

 Delphi7
支持对XML文档的操作,
能够经过TXMLDocument类来完成对XML文档的读写 。
能够运用TXMLDocument把XML文档读到内存中,然后
能够进行修改、
保存操作 。TXMLDocument类是经过DOM(文档目标模型)接口来
访问XML文档中的各个元素的 。对于DOM接口的完成有多种
形式,Delphi
支持的
形式有:1)微软的MSXML SDK,这种
形式是经过COM目标来完成;2) Apache 的Xerces的完成
形式;3)别的一种是开源OpenXML完成
形式 。对于不一样的接口完成
形式
能够经过设定TXMLDocument的DOMVender来进行操作 。
支持XML的Delphi单元主要存在与…BorlandDelphi7SourceXml目录下,主要包含:XMLIntf,XMLDoc,xmldom,msxmldom,xercesxmldom,xdom,oxmldom等单元

查找引擎优化成功必先处理的三个大忌Windows 7超级有用的迅速操作窍门
各种Windows7装置办法及解析参数不能阐明全部 音频设备参数解析
l  XMLIntf――包含了Borland自个界说的XML文档的接口;
l  XMLDoc――是对XMLIntf中所界说接口的Borland完成;
l  Xmldom――界说了DOM(文档目标模型)接口,这儿对DOM接口进行了Borland的完成;
ios应用的装置与卸载专业摄影师实战解说 影棚里的打光窍门
向长辈问候:平板在iPad之前都长这么网站外链出现的疑问及处理办法
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文档进行解析;
三种解析器
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解析器;
运用不一样解析器的
对比
对于三种
形式的解析器
对比如下:
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的
支持也是非常完善的 。
Delphi7
支持对XML文档的操作,
能够经过TXMLDocument类来完成对XML文档的读写 。
能够运用TXMLDocument把XML文档读到内存中,然后
能够进行修改、
保存操作 。TXMLDocument类是经过DOM(文档目标模型)接口来
访问XML文档中的各个元素的 。对于DOM接口的完成有多种
形式,Delphi
支持的
形式有:1)微软的MSXML SDK,这种
形式是经过COM目标来完成;2) Apache 的Xerces的完成
形式;3)别的一种是开源OpenXML完成
形式 。对于不一样的接口完成
形式
能够经过设定TXMLDocument的DOMVender来进行操作 。
支持XML的Delphi单元主要存在与…BorlandDelphi7SourceXml目录下,主要包含: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文档进行解析;
三种解析器
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解析器;
运用不一样解析器的
对比
对于三种
形式的解析器
对比如下:
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的
支持也是非常完善的 。






[font=Tahoma  ][font=Tahoma  ][font=Tahoma  ]

优质IT资源分享社区为你提供此文。
本站有大量优质Delphi教程视频,资料等资源,包含Delphi基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。
Delphi教程视频
优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客