知识大全 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

相关参考

知识大全 使SQL Server数据支持 XML

使SQLServer数据支持XML  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  学习如何用SQ

知识大全 JavaFX HTTP网络和XML分析

JavaFXHTTP网络和XML分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  JavaFX

知识大全 XML技术与数据库的发展趋势分析

XML技术与数据库的发展趋势分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库技术及其应

知识大全 C#中使用XML---基于DOM的案例分析

C#中使用XML---基于DOM的案例分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  编写此

知识大全 C#中使用XML基于DOM的案例分析

C#中使用XML基于DOM的案例分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  编写此案例的

知识大全 使用XML文件作为Web持久层的OO分析过程

使用XML文件作为Web持久层的OO分析过程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在一

知识大全 Delphi7中使用RAVE报表

Delphi7中使用RAVE报表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!最近刚刚做完一个项目

知识大全 Delphi7中快速得到本机IP地址

Delphi7中快速得到本机IP地址  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!朋友们在用Del

知识大全 Delphi7.0常用函数速查手册

Delphi7.0常用函数速查手册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!函数由一句或多句代

知识大全 对XML文档进行添、删、改、查的程序

对XML文档进行添、删、改、查的程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n