2024年4月8日发(作者:)
使用Tuxedo将C语言中的结构体转换成Xml
格式的字符串
----使用Tuxedo10gR3的API进行的开发,我的邮箱是
changpeng999@ 欢迎指正文中的错误,谢谢,转载请注明
1. 概述
1.1 XML语言
在百度百科中XML(Extensible markup language)可扩展标记语言的定义是:用于标记
电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户
对自己的标记语言进行定义的源语言。
举一个XML字符串的实例:
XML具有自描述性,其标签没有被预定义,这样使得其可以存储的信息的扩展性很强,
我觉得在信息交换方面很有用;其次XML的结构是可以嵌套的,由各个形成树状。
1.2 C结构体
C语言中的结构体同样能够完成XML所实现的功能,但是其是一种语言中的数据类型,
必须通过C语言的函数和语法来进行操作。在项目中有时我们会从外部接收到XML格式的
数据或者向外发送XML格式的数据,需求要求我们将C结构体所存储的数据以XML格式的
形式体现出来,Tuxedo中的FML(Field Manipulation Language域操作语言)就能够完成这个任
务。
2. Tuxedo将C结构体转换成XML格式的字符串
2.1 Tuxedo的FML概念
域操作语言(Field Manipulation Languages或者FML),是一个用来定义和操作被称为域缓
冲存储结构的C语言函数集合,域缓冲的域(filed)中包含了属性—值(attribute-value)对。属性
是域的标识符,其对应的值包含了域的数据内容。
通过对相关域的集合提供一个有名访问(named access),域缓冲为不同进程间的参数
化的数据通信提供了一个非常好的结构。需要同其他进程通信的程序可以使用FML软件来
提供对域的访问而不需要考虑包含这些域的结构。
FML也提供了一个叫做VIEWS的工具,其允许你将域缓冲映射到C语言的结构体或者
COBOL中的records,反之亦然。VIEWS工具使你执行冗长的数据操作在结构体中进行而不
是在域缓冲中进行;如果数据被传输至结构体中来进行操作,应用程序能够运行的更快。因
此,VIEWS工具将域缓冲中的数据独立性和经典的结构体(record structures)的效率和简洁联
系在了一起。
下面是域表文件empdataflds文件内容的截图,
该文件定义了三个域,它们的域名称分别是EMPNAME,EMPID和EMPJOB,对应的数据
类型分别是string,long和string。
命令mkfldhdr32会根据域表文件empdataflds生成域头文件empdataflds.h
下图是source viewfile empdata.v的所有内容


发布评论