Delphi7对XML的支持分析

Delphi 7 XML处理完整案例详解与实战 Delphi 7作为一款经典的RAD开发工具,凭借其高效的开发效率和稳定的运行性能,至今仍在许多遗留系统与企业级应用中广泛使用。XML作为一种结构化、跨平台的数据描述语言,在数据存储、系统间通信及配置管理中发挥着不可替代的作用。在Delphi 7中,开发者可以通过MSXML库实现对XML文档的解析与操作。该库基于COM技术,提供了丰富的接口,如,用于加载、查询、修改XML内容。 阅读详情
elphi7对XML的支持---TXMLDocument类 

   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的支持也是非常完善的。 
Delphi XML网站管理系统实战教程 XML(Extensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言。它使用一组简单的标记来描述数据,这些标记可以被任何支持XML的软件程序读取和解析。XML的灵活性和可扩展性使其成为数据交换的理想选择,特别是在不同系统和平台间共享数据时。Delphi是一种由Embarcadero Technologies公司开发的集成开发环境(IDE),它支持快速应用程序开发(RAD),并在企业级开发中被广泛使用。 阅读详情

相关推荐

Delphi 7用FastReport 4.73报表设计工具介绍

在信息技术领域,报表作为传递关键业务信息的工具,一直扮演着至关重要的角色。Delphi 7 作为一个经典的开发工具,其报表设计功能为开发者提供了强大的数据可视化和处理能力。本章节将简要介绍Delphi 7报表设计工具的基本概念、特点以及在数据报告领域中的应用前景。Delphi 7 所提供的报表设计工具支持快速创建结构化和格式化的报表。其独特的可视化设计器简化了报表的布局、设计和预览过程。

weixin_35006125的博客 1033

Delphi解析xml

Delphi解析xml

旭旭的博客 1479

SynEdit Delphi控件深度解析与源码实战(支持D6/D7/D2007)

SynEdit是Delphi平台中一款高性能、开源的文本编辑组件,专为代码编辑场景优化设计。其核心采用轻量级绘制引擎,通过实现语法高亮,利用Gutter机制支持行号、断点等可视化元素,并以事件驱动模型保证扩展性。控件架构高度模块化,关键逻辑封装于中,定义了文本存储()、格式属性()及输入状态机。在Delphi 6至2007版本中,通过条件编译与VCL兼容层实现稳定集成。实际应用中,常用于嵌入式脚本编辑器、日志分析工具及轻量IDE开发,为后续功能扩展提供坚实基础。

weixin_32047493的博客 725

delphi解析xml

delphi解析xml //解析xml ComXML := LoadXMLData(jmxml); XMLNode := ComXML.DocumentElement; if not XMLNode.HasChildNodes then Exit; nodeList := XMLNode.ChildNodes; for i := 0 to nodeList.Count - 1 do begi...

weixin_44581028的博客 1963

delphi 解析XML

delphi 解析XML,操作方便,简单易用。 Installation ============ Simply open the zipfile and copy the source files and docu to a folder of your choice. If you want to use NativeXml in your project, follow these steps: 1) Copy the NativeXml files from the NativeXml directory into your project folder. Copy additional files in the General directory to your project folder or some appropriate general folder you want. 2) Include the clause "uses NativeXml" in your unit. If you want to use NativeXml in all your projects, you can also add the NativeXml folder to your library path.

delphi解析xml文件实例

delphi解析xml文件实例,代码为delphi7编写,逐步解示XML节点读取,与记录读取方法,

delphi xml解析_使用Delphi创建,解析和处理XML文档

什么是XML? ( What is XML? ) Extensible Markup Language is auniversal language for data on the Web. XML gives developers the power to deliver structured data from a variety of applications to the de...

cumao2792的博客 1291

关于Delphi7读取保存XML

关于Delphi7读取保存XML 读取XML,修改节点,保存XML的一个完整实例。

使用Delphi解析XML 文档

使用Delphi解析XML 文档[ 2005-08-24 13:17:23 | 作者: cyberfan ] 字体大小: 大 | 中 | 小 对于XML的解析主要有 DOM(文档对象模型) 和SAX(Simple API for XML)。DOM是通过构建内存对象来完成XML的解析, 后者则是将解析过程转换为事件驱动。 Delphi提供了三种DOM解析程序:MSXML, Open XM

pgnet 1万+

LSF调度实战:如何用bsub命令实现多队列资源抢占与公平调度

本文深入探讨了LSF作业调度系统的高级实战技巧,重点解析如何通过配置`lsb.queues`文件与灵活运用`bsub -R`命令,构建一套兼顾效率与公平的多队列资源抢占与调度体系。文章详细介绍了队列优先级设计、公平共享机制、资源感知调度以及抢占策略的实施,帮助集群管理员解决高优先级任务等待、资源分配不均等常见问题,实现计算资源的精细化管理和高效利用。

vvv99的博客 218

新手入门:从零开始学习PCB飞针测试全流程(附常见问题解答)

本文详细介绍了PCB飞针测试的全流程,从核心原理、设备解析到实操步骤和常见问题解答,帮助新手快速掌握这一电子制造领域的关键质检技术。内容涵盖测试资料准备、参数设置、设备操作技巧以及故障排查方法,特别适合小批量PCB生产的质量检测需求。

weixin_29295541的博客 389

NativeXml D7-10.4 Full Source + Demo:一款Delphi的XML操作利器

NativeXml D7-10.4 Full Source + Demo:一款Delphi的XML操作利器 去发现同类优质开源项目:https://gitcode.com/ NativeXml D7-10.4 Full Source + Demo:项目的核心功能/场景 专为Delphi设计,提供从Delphi 7到10.4版本的XML文件操作,包括读取、创建和修改。 项目介绍 在软件开发领域,XM...

gitblog_06761的博客 939

如何读懂CiteSpace图谱?科研小白必看的节点颜色/年轮/聚类解读手册

本文详细解析CiteSpace图谱的核心视觉元素,包括节点颜色、年轮和聚类标识,帮助科研人员准确解读数据分析结果。通过生物医学案例展示如何从图谱中识别关键文献和研究趋势,提供五步系统解读法和常见错误规避策略,助力科研小白快速掌握文献计量分析技巧。

weixin_29179311的博客 314

DELPHI7调用JAVA接口资源文件介绍:DELPHI 7与JAVA的无缝连接

DELPHI7调用JAVA接口资源文件介绍:DELPHI 7与JAVA的无缝连接 去发现同类优质开源项目:https://gitcode.com/ 在软件开发领域,不同编程语言之间的数据交互与集成一直是一个热门话题。DELPHI 7与JAVA作为两种成熟的编程语言,在实际开发中,如何实现它们之间的无缝连接成为了一个关键问题。本文将为您介绍一个开源项目,它提供了一个专门用于DELPHI 7环境下调用...

gitblog_06785的博客 319

RK3568驱动XS9922B:AHD/CVBS双模摄像头兼容性实战

在嵌入式视频开发中,摄像头驱动的稳定性与兼容性往往决定项目交付质量。Linux内核的V4L2框架提供了统一的视频采集抽象,从v4l2_subdev子设备到media controller链路,再到用户态视频节点,每一层都需要精确配置。对于RK3568这类边缘计算平台,其MIPI CSI接口和自研ISP配合RKCIF,构成了完整的多路视频接入通路。当需要接入模拟视频解码芯片时,驱动设计就需同时考虑AHD高清协议与CVBS标清信号的模式切换、格式协商以及寄存器配置。XS9922B作为支持双模输入的解码芯片,可与

weixin_34216614的博客 346

STC8G1K08A 实战应用:从配置到功能实现

本文详细介绍了STC8G1K08A单片机的实战应用,从开发环境搭建、GPIO配置、ADC模块使用到定时器中断处理和PWM输出等核心功能。重点讲解了外设模块的协同工作配置技巧,并分享了实际项目开发中的经验教训,帮助开发者快速掌握STC8G1K08A的高效应用。

n4o5p6q7r的博客 390

Delphi解析XML文件实例:项目推荐文章

Delphi解析XML文件实例:项目推荐文章 去发现同类优质开源项目:https://gitcode.com/ Delphi解析XML文件实例,助您轻松掌握XML文件读取与处理。 项目介绍 在这个信息化时代,XML文件作为一种通用的数据交换格式,被广泛应用于各个领域。为了帮助开发者更高效地处理XML文件,Delphi解析XML文件实例应运而生。本项目是一个开源资源,提供了一个使用Delphi 7编...

gitblog_06738的博客 966

OpenClaw进行安全测试(附使用场景案例)

test-master 是一个全面的测试专家,覆盖功能测试、性能测试、安全测试三大领域。这里我们重点来看下使用test-master如何进行安全测试。使用 test-master 时,可以针对以下高频领域进行专项安全扫描:✅ OWASP Top 10 测试✅ SQL 注入测试✅ XSS 测试✅ CSRF 测试✅ 认证 / 授权测试。

十二测试录 330

Delphi操作XML简介

参考:http://www.delphifans.com/InfoView/Article_850.html   Delphi 7支持对XML文档的操作,可以通过 TXMLDocument类来实现对XML文档的读写。可以利用TXMLDocument把XML文档读到内存中,从而可以进行编辑、保存操作。TXMLDocument类是通过DOM(文档对象模型)接口来访问XML文档中的各个元素的。对于D...

weixin_30924087的博客 273

Virtual Hard Disk version 2 (VHDX) 文件格式详解

VHDX 镜像格式详解 0. References windows github 1. Overview Microsoft 虚拟化产品中常用的映像格式是虚拟硬盘版本 2 (VHDX) 映像格式。该规范基于可用文档,并通过分析测试数据进行了增强。 VHDX 镜像格式种类 固定硬盘镜像 动态硬盘镜像 差异硬盘镜像 VHDX 镜像文件由以下元素构成: file (type) identifier 2x image headers 2x region tables log or metadata journ

圣三一 2695

SAP 固定资产采购简介

SAP 固定资产采购是指企业通过采购流程获取长期使用并记录为固定资产的物品。固定资产是企业为长期使用而购置的资产,如机器设备、办公设备、建筑物、车辆等,通常这些资产的使用期限较长,并且在资产负债表上记录。在SAP系统中,固定资产采购流程通常与物料管理(MM)模块和固定资产管理(FI-AA)模块相结合。这个过程涉及从需求的提出、采购订单的创建,到货物接收、发票校验和资产激活的多个步骤。

我小时候很黑的博客 1728

传说中的DELPHI9--DiamondBack

昨天在MSN上碰到现在深圳的老朋友“太可怕”,他告诉我今年的BorCon上将会有DELPHI 9的正式消息,并发给了我这个:《Come to BorCon 2004 (US) to see the next Delphi release! - by John Kaster》。但是很遗憾,距离BorCon 2004还有23天,我用GOOGLE搜了一下,没有找到比BDN上这篇东东更多的内容,看来一

猛禽的编程艺术 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

QuickReport.v4.5.for.Delphi7资源文件介绍:强大的报表生成工具,Delphi7专属

QuickReport.v4.5.for.Delphi7资源文件介绍:强大的报表生成工具,Delphi7专属 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发领域,报表生成是一项基础而关键的功能。QuickReport.v4.5.for.Delphi7 是一款面向 Delphi7 开发者的资源文件集合,旨在提供一种高效、灵活的报表生成解决方案。该资源文件集...

gitblog_06706的博客 474

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 制作从屏幕右下角逐渐弹出的消息提示框
下一篇: CreateRoundRectRgn
Dcdu
博客等级 码龄21年 44粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值