[发明专利]基于XML模式的数据绑定应用程序接口生成方法无效
申请号: | 200810112277.8 | 申请日: | 2008-05-22 |
公开(公告)号: | CN101339500A | 公开(公告)日: | 2009-01-07 |
发明(设计)人: | 李涓子;王峰;张鹏;李军;陈德伟;唐杰 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F17/22;G06F17/30 |
代理公司: | 北京众合诚成知识产权代理有限公司 | 代理人: | 朱琨 |
地址: | 100084北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 xml 模式 数据 绑定 应用程序 接口 生成 方法 | ||
技术领域
本发明属于xml数据绑定或代码自动生成领域。
背景技术
数据绑定技术提供了一种简单而直接的方法,使得可以在Java、C++等平台应用程序中高效的使用XML、Database等各种非结构化的数据源。通过数据绑定,应用程序可以在一定程度上忽略XML文件的实际结构和数据库中存储表的结构等因素的制约,而直接使用通过绑定的代码来访问数据内容。在读写文件时,一些特殊类型的数据(譬如数字和日期)可以被转换成程序语言中存在的类型形式,而不是保留为文本形式,这使应用程序可以更方便、有效地使用数据本身,而不用过多的关心其所采取的存储和表示方式。
目前市场上有很多技术产品都实现了对于XML数据绑定的支持。但是它们各自所能支持的Schema特性以及生成的目标代码种类上有十分巨大的差别。当需要进行数据绑定的Schema足够的简单和短小时,很多开源技术就可以满足要求。但是当需要进行数据绑定的Schema文档包含复杂特性(如extensions、restrictions、substitution groups等)的时候,现有的大多数开源技术就无法进行完全的支持。由Apache基金所支持的XMLBean项目而言,虽然它可以支持大多数复杂的Schema结构,但是在利用XMLBean进行数据绑定时,目前还没有有效的方法来达到对生成API方法的增加和修改等操作,这导致当用户需要生成高度可定制的API时,XMLBean也无法胜任;另外XMLBean只支持生成Java平台下的API,这就使得很多基于其它平台的应用程序无法直接使用。在C++平台下这些问题表现更为突出。
针对这些问题以及实际存在的复杂XMLschema规范,本发明提出了一种自动生成用于操作符合XML Schema规范的XML文件的数据绑定API的方法。该方法以数据绑定技术为基础,首先生成一套与生成目标语言类型无关的中间配置层,然后通过附加独立的目标代码生成引擎生成所需类型目标代码。在进行数据绑定时,通过如下方式进行:采用以Dom结构存储数据,在生成代码的类中封装Dom结点的私有成员变量指针(或引用),并在类的方法中通过Dom指针(或引用)完成对数据的操作;在最顶层添加API顶层类,并实现save和load方法用以对XML文件的进行存储操作,完成对象与XML文本的转换。
发明内容
本发明的目的在于提供一种依据复杂XML schema模式,生成操作符合该schema模式的XML文件的数据绑定应用程序接口方法。
本发明的特征在于:
步骤1,使用JaxMeXS解析器,对输入到计算机中的可扩展宏语言XML Schema模式做语法解析和逻辑解析,生成SchemaElement和SchemaDataType类型的对象,在其中记录与Schema相关的所有信息,其中至少包括子元素列表,属性列表以及父类型名称:
步骤1.1,语法解析:记录所有在Schema中定义的数据类型datatype,存入到syntax_map中,并单独记录abstract属性为true的datatype,存入到abstract_map中;
步骤1.2,逻辑解析:对Schema进行逻辑解析,对于其中定义的元素、数据类型分别生成SchemaElement和SchemaDataType类型的对象,并在其中记录与Schema相关的所有信息,各自形成一个信息详单,数据项中含有子结点名、类型以及约束信息;
对于所有的element,在所述记录信息中,包含有根据Schema中定义来设置的SchemaElement对象成员变量或成员变量值,以及生成代码所需的所有Schema信息,并把生成的对象添加到_element列表中;
对于所有的数据类型datatype,在所述记录信息中,除了根据schema中的定义设置的成员变量或成员变量值以及生成代码所需的所有schema信息外,当该datatype是通过其他数据类型经过扩展或者约束修饰而来,则要在parent_map中记录两种数据类型之间的继承关系,即被扩展或约束的类型为本类型的父类型,并把生成的对象添加到_datatype列表;所属子元素列表至少包含子元素名称、类型、以及允许出现次数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810112277.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:数字直放站系统及其工作方法
- 下一篇:一种汽车踏板的同步开关
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置