Delphi 6 含有许多更新更强的XML支持功能,增加了XML文件编程,XML数据绑定向导,XML映象和BizSnap(SOAP/XML Web服务)。本文是三篇论述Delphi 6中XML功能系列文章的第三篇,也是最后一篇,论述Delphi 6中的XML映象工具,也称之为XML映象器(XML Mapper)。
XML映象器
可以单独打开或者在IDE的工具(Tools)菜单中打开映象器(XML Mapper)。这个工具将XML文件影射为类似于数据库中的数据集(DataSet)!在前二篇文章中,我们都使用TXMLDocument组件来处理XML文件或XML绑定的数据。现在,我们不再使用TXMLDocument组件了。我们用XML映象器将XML文件转换成数据包(或反之),这样就可以象我们非常熟悉得那样使用诸如DataSet这样的组件来处理XML数据。
XML映象器可以打开XML文件和数据包文件(*.xml,*.cds),纲文件(*.dtd,*.xdr,*.xsd),库文件(*.xrp)和转换文件(*.xtr)。后面这个转换文件是由映象器自行产生的。现在加载我们在前二篇文章中用到的Clinic.xml文件,看看数据影射成什么样。
如图1所示,Clinic.xml影射为一个Clinics结构,含有若干Clinic子项。每个Clinic有4个域:@No, Title, Date, 和Topics。注意@No是属性,其他3个是元素。
将鼠标移至Clinic节点,按右键,选择"Select All"(Ctrl+A)或者"Select All Children",这样就把@No, Title, Date and Topics各项加到中间的映象表内。此时还没有生成相应的数据集域。
我们再次到Clinic节点按下鼠标右键,选择"Create Datapacket from XML"(Ctrl+D),这时产生了相应的数据包并显示在映象器的右方,如图2所示。
映象器将XML文件转换成4个标准格式的数据包。我们还可以增加或删除数据包。这在B2B场合尤为重要,将接收到的数据(纪录)插入到数据库中。
创建并测试转换
按下Create and Test Transformation按钮,随即弹出一个DBGrid窗口,以ClientDataSet数据包格式显示Clinic.xml文件里的数据。数据转换之后,有4种方式存盘。对于初学者来说,可以存回原先的Clinic.xml文件。另外还可以存为包数据文件格式(*.xml),库文件(repository)格式(.xrp)和转换文件格式(*.xtr)。后面的库文件可以被XMLTransform组件(在Data Access标签里)调用。
XML转换
Delphi 6里有3个XML转换组件。TXMLTransformProvider组件通过clinic.xtr文件将原始XML文件转换到ClientDataSet。
举例来说,在Delphi 6的主窗体上安放一个TXMLTransformProvider(在Data Access标签里)。将TransformRead属性的TransformationFile子属性设为clinic.xtr作为数据源。将XMLDataFile设为clinic.xml文件。
然后安放一个ClientDataSet组件,将它的ProviderName属性设为XMLTransformProvider。
现在可以激活ClientDataSet组件了,它将由XMLTransformProvider提供的数据转换过来。它的PacketRecords属性值缺省为-1,表示转换全部XML文件。
要显示数据,我们再加入DataSource和DBGrid组件。将DataSource指向ClientDataSet,DBGrid指向DataSource,就象我们通常使用得那样。结果显示如图3。
现在可以象使用数据库数据那样使用XML文件里的数据了。如果对数据进行了修改,可以调用ClientDataSet.ApplyUpdates方法将改动的数据存回XML文件。
但是这样做是不够的。我们还得启动XML映象器,将创建方式由"XML to Datapacket"改为"Datapacket to XML"。这时如果按下"Create and Test Transformation"键,看到的是空白页。然后将转换结果存为ClinicToXml.xtr文件。
现在,将TXMLTransformationProvider的TransformationWrite属性中的子属性TransformationFile设为ClinicToXml.xtr文件。
最后在主窗体的OnClose事件中加上存盘指令:
ClientDataSet1.ApplyUpdates(-1)
程序退出之前会将作出的数据修改存回XML文件。
这样就为Delphi 6的B2B开发环境BizSnap的虚拟中间层作好了数据准备。
分享到:
相关推荐
delphi读取xml文件显示TMemo上,可编辑,按原路径保存文件
delphi文件XML生成树delphi文件XML生成树
Delphi7向常用的XML文件中添加内容,按照XML的节点规则依次写入内容,自定义各个节点及节点内容,具体的操作代码如下示: var iXml: IDOMDocument; iRoot, iNode, iNode2, iChild, iAttribute: IDOMNode; ...
delphi解析xml属性节点,根据不同节点获取属性值,与获取节点值不同的方式
delphi对XML基本操作,压缩包中有源代码及可执行程序
delphi中用 Xml 配置文档生成 Treeview
delphi操作xml中的结点、元素、属性等
delphi xml 指南 delphi xml 指南 delphi xml 指南 delphi xml 指南 delphi xml 指南
Delphi XML解析器 Native Xml 4.07
delphi中调用 xmldelphi中调用 xml
关于Delphi7读取保存XML 读取XML,修改节点,保存XML的一个完整实例。
delphi 处理xml的相关资料及案例
本文是一个应用delphi解析xml文档然后插入数据库的完整的例子
delphi操作xml文件的一个示例,对初学者来说起到一个指导作用,个人觉得还不错,放上来,有这方面需要的朋友可以下载下来研究一下。
Delphi XMLDocument控件之XML实例:新建、打开、保存、编辑等操作 Delphi XMLDocument control XML instance: new, open, save, edit, and other operations
Delphi XML 权威指南 Delphi XML 权威指南 Delphi XML 权威指南 Delphi XML 权威指南
delphi xe7下面编写的格式化xml文件的demo。 可将FormatMyXML函数拷贝到其它版本使用。
delphi开发环境本身没有代码格式化功能,该工具方便的调整源代码的格式。支持 Delphi6和Delphi7代码格式化工具,希望对大家有帮助
用Delphi编写的,对XML文件的创建、增、删、改、查等操作。
DELPHI 实现的XML 解析实例 DELPHI 实现的XML 解析实例