知识大全 Delphi7对XML的支持分析
Posted 知
篇首语:缥帙各舒散,前后互相逾。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi7对XML的支持分析相关的知识,希望对你有一定的参考价值。
Delphi7对XML的支持分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Delphi 支持对XML文档的操作 可以通过TXMLDocument类来实现对XML文档的读写 可以利用TXMLDocument把XML文档读到内存中 从而可以进行编辑 保存操作 TXMLDocument类是通过DOM(文档对象模型)接口来访问XML文档中的各个元素的 对于DOM接口的实现有多种方式 Delphi支持的方式有 )微软的MSXML SDK 这种方式是通过对象来实现 ) Apache 的Xerces的实现方式 )另外一种是开源OpenXML实现方式 对于不同的接口实现方式可以通过设定TXMLDocument的DOMVender来进行控制支持XML的Delphi单元主要存在于…\\Borland\\Delphi \\Source\\Xml目录下 主要包括 XMLIntf XMLDoc xmldom msxmldom xercesxmldom xdom oxmldom等单元
XMLIntf 包括了Borland自己定义的XML文档的接口
XMLDoc 是对XMLIntf中所定义接口的Borland实现
Xmldom 定义了DOM(文档对象模型)接口 这里对DOM接口进行了Borland的实现
Msxmldom 实现微软对Xmldom中定义的接口的实现 主要调用微软的对象来实现 对Xmldom中定义接口的封装
Xercesxmldom Borland通过Xerces XML DOM方式来实现对Xmldom中定义接口的封装
Oxmldom Borland通过使用OpenXML来实现对Xmldom中定义接口的封装
TXMLDocument类的属性 请参考Borland的帮助文件
一 读写XML文档 1 读取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 = ): IXMLDocument;
可以看出这些函数全部返回的是IXMLDocument接口 得到了IXMLDocument接口在进行文档的操作
这些函数都是通过创建TXMLDocument对象来实现对XML文档的读取的 其中NewXMLDocument仅仅创建一个IXMLDocument接口
可以这样利用NewXMLDocument来读取XML文档
XMLDoc := NewXMLDocument;
XMLDoc LoadFromFile(FileName);
2 保存XML文档
可以通过下面的方式来保存XML文档
XMLDoc := NewXMLDocument;
iRoot := IXMLDoc CreateNode( TestXMLDocument );
XMLDoc DocumentElement := iRoot;
…
XMLDoc SaveToFile(FileName);
可以看出通过接口来操作XML文档是非常方便的
二 选用不同类型的XML解析方式 上面已经提到有三种方式实现DOM 也就是可以应用Borland提供的3种不同的XML解析器来对XML文档进行解析 1 三种解析器
(1)微软的解析器(MSXML SDK)
微软解析器主要应用在Windows中 在安装MSXML SDK的时候会安装解析器 同时IE浏览器也提供了解析器 这个解析器是一个
(2)Apache的Xerces解析器
Borland自己实现了一个Xerces解析器 这个可以通过调用xercesxmldom dll模块来实现 如果使用这个解析器可能需要同应用程序一起进行分发xercesxmldom dll XercesLib dll CC MT DLL三个DLL文件
(3)OpenXML解析器
这个解析器的源代码存在于xdom pas单元中 这个可以通过// philo de/xml/进行更新下载 这个是一个德国人写的XML解析器
2 使用不同解析器的比较
对于三种方式的解析器比较如下
(1)微软的解析器
微软的解析器当然好了 但是也不能排除存在的意外情况 在我个人的经验中 至少我们公司对于XML解析的方式 只有在IE 以上的版本才能够正常的工作 至于 Borland同样是通过引入MSXML DLL的接口来实现的 所以可以推理出 同样存在同样的问题 这个通过研究TMSDOMImplementation(msxmldom单元中)的实现方式可以得到证明 实现的过程中通过调用CoCreateInstance函数接口来实现解析的
在发布解析XML的代码的时候可能就会存在由于IE的版本不同 需要把IE 一同发布 比较麻烦
(2)Borland的Xerces解析器
这种方式的解析器是通过 LoadLibrary(PChar(LibName));函数 LibName的内容是xercesxmldom dll(Windows平台) libxercesxmldom so (Linux平台) 那么就需要随同应用程序一起发布Dll 就包括了xercesxmldom dll XercesLib dll CC MT DLL
这个发布相对于发布不同版本的IE 来说要相对简单一些
(3)OpenXML解析器
由于存在xdom pas单元 这个单元中包含了完全的XML解析的源代码 那么应用这种方式 可以避免软件发布的种种问题 这是由于解析的代码被静态编译在应用程序内部 唯一不好的地方就是应用程序的体积可能要大一些
3 如何使用不同的解析器
我们可以写一个函数来使用不同的解析器
function NewDiffXmlDocument(DOMVender: string;Version: DOMString = ): 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的封装
cha138/Article/program/Delphi/201311/8508相关参考
使SQLServer数据支持XML 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 学习如何用SQ
JavaFXHTTP网络和XML分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! JavaFX
XML技术与数据库的发展趋势分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库技术及其应
C#中使用XML---基于DOM的案例分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 编写此
C#中使用XML基于DOM的案例分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 编写此案例的
使用XML文件作为Web持久层的OO分析过程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在一
Delphi7中使用RAVE报表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!最近刚刚做完一个项目
Delphi7中快速得到本机IP地址 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!朋友们在用Del
Delphi7.0常用函数速查手册 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!函数由一句或多句代
对XML文档进行添、删、改、查的程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n