[发明专利]基于XML模式的数据绑定应用程序接口生成方法无效
申请号: | 200810112277.8 | 申请日: | 2008-05-22 |
公开(公告)号: | CN101339500A | 公开(公告)日: | 2009-01-07 |
发明(设计)人: | 李涓子;王峰;张鹏;李军;陈德伟;唐杰 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F17/22;G06F17/30 |
代理公司: | 北京众合诚成知识产权代理有限公司 | 代理人: | 朱琨 |
地址: | 100084北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 xml 模式 数据 绑定 应用程序 接口 生成 方法 | ||
1.基于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列表;所属子元素列表至少包含子元素名称、类型、以及允许出现次数; 步骤2,接口映射,根据SchemaDataType和SchemaElement对象中记录的信息,按以下步骤,通过接口映射生成目标代码中每个类以及类中成员变量的接口信息生成DataTypeObject和NodeObject实体描述对象,以完成从结点的Schema到对该结点进行操作访问的应用程序接口API操作接口之间的映射:
步骤2.1,建立一个Schema描述信息到API操作接口的对照表,所述API操作接口包括读、写、管理以及特有操作接口CNML,在所述对照表中,包括以下两种映射关系:
基本映射关系,是对元素或属性内容的一些基本操作接口的映射规则,其中包括以下五种关系:
对于元素属性数据,提供以下两种API操作接口:
setXXXAttr,设置元素某一属性值,
getXXXAttr,获得元素某一属性值,
对于包含有文本内容的元素,当出现次数maxOccur为1时,提供以下两种操作接口:
setText,设置元素的文本内容,
getText,获取元素的文本内容,
对于包含子元素的元素或者数据类型,当出现minOccur和maxOccur都为1时,提供以下几种操作接口:
addXXX,添加XXX子元素,
getXXX,获得XXX子元素,
removeXXX,删除XXX子元素,
当子元素包含文字结点时,提供以下操作接口:
setXXXText,设置当前元素下XXX子元素中包含的文本内容,
getXXXText,获取当前元素下XXX子元素中包含的文本内容,
对于包含的子元素中出现maxOccur大于1时,提供以下几种操作接口:
addXXX,添加XXX子元素,
getXXXint index,获得由索引index所指示的XXX子元素,int是Java内置整型数据类型,
removeXXXint index,删除由索引index所知是的XXX子元素,
getXXXTextint index,获得由索引index所指示的XXX子元素文本内容,
setXXXTextint index,设置由索引index所指示的XXX子元素文本内容,
getXXXList,获得当前元素下所有XXX子元素的列表,
getXXXTextList,获得当前元素下所有XXX子元素文本内容的列表,
特有映射针对所述XML特有操作接口,以一种附加的形式连同基本操作接口同时给出,包括以下四种:
XPath数据访问接口:为所有的属性、元素和类型定义添加getNodeByXPath,getNodesByXPath以及getValueByXPath特有操作接口,其中:
getNodeByXPath为根据指定的XPath获得相应结点对象,
getNodesByXPath为根据指定的XPath获得相应结点对象列表,
getValueByXPath为根据指定的XPath获得其对应的第一个结点对象的文本内容,
特殊类型数据设置与访问接口,针对元素文本内容可能为HTML格式数据内容或CDATA格式数据内容,为所有元素添加以下接口:
setCDATAText:为当前元素设置CDATA格式的文本内容,
hasCDATAText:判断当前元素是否含有CDATA格式的文本内容,
asXML:获取当前元素内部所有元素、属性等的XML文本,并包含当前元素的标签,
getXML:获取当前元素内部所有元素、属性等的XML文本,不包含当前元素的标签,
getXMLText:获取当前元素内部所有元素、属性等的XML文本,并去掉其间所有的XML标签,
对于Schema中通过正则表达式对其文本内容进行格式约束的元素,添加validateType方法,用于检验所当前元素所包含的文本内容是否符合类型定义中正则表达式的限制;
对于有多种子类型的数据类型定义,提供addXXXofYYYType操作接口,用一个YYY的实例来添加为当前元素的XXX子元素;
步骤2.2,把步骤2.1中完成接口映射生成的接口对象保存成XML中间配置文件,供用户修改该中间配置文件,实现生成目标代码的个性化:
步骤2.2.1,依次从_datatype列表中取出SchemaDataType对象,依据该对象中的成员变量值以及预先如上定义的接口映射规则为其生成一个DataTypeObject类对象,在该对象的列表中加入为每个操作接口生成的NodeMethod对象,把生成的DataTypeObject加入到data_cache_中,所述的NodeMethod对象是依据上述映射规则生成的一个用来对datatype所定义的XML元素进行操作的函数接口描述,其中会有以下数据项:
name:用来记录所需生成函数的函数名称,
isAttributeMethod:用来记录是否是对某个元素属性进行操作的函数,
MethodReturn:用来记录所需生成函数,
Arguments:记录生成函数的参数信息,
MethodAction:记录生成函数的函数体实际所需提供的操作信息,
步骤2.2.2,依据步骤1.2中生成的parent_map中的继承关系,为相应的两个datatype所对应的DataTypeObject对象加入依赖关系;
步骤2.2.3,依次从_element列表中取出SchemaElement对象,依据该对象中的成员变量值为其生成一个NodeObject类,并在NodeObject类中相应列表中加入NodeMethod对象,用以记录需要生成的成员函数接口描述,并把生成的NodeObject加入到cache_中;
步骤2.2.4,把所得到的cache_和data_cache_中的对象保存成XML中间配置文件,作为中间代码备用,供用户修改,实现API操作接口的定制;
步骤3,从中间代码读入步骤2.2.4所述经过用户修改的XML中间配置文件,然后在内存中生成DataTypeObject和NodeObject的对象,分别相应的保存到data_cache_和cache_中;
步骤4,针对不同的程序设计语言,使用代码生成程序,生成API源代码:
步骤4.1,对于cache_中的每一个对象,利用相应的程序设计语言代码生成程序,生成用于操作XML文件中element的interface以及实现类,所述的实现类是指用于实现该类的对应的接口中定义的接口interface中定义的接口函数,在每个具体的实现类中要把该类对应的XML元素在dom树上的dom结点对象作为私有变量封装在该类中,类中对于该元素的操作要调用该dom节点中相应的函数来实现;
步骤4.2,对于data_cache_中的每一个对象,用所述步骤4.1的方法来生成用于操作XML文件中datatype所定义的元素的接口以及实现类;但是,若该datatype在schema中定义为abstract,则生成的接口也设置为abstract,若该datatype是从其他数据类型约束或扩展而来,则为该接口添加与父接口的继承关系;
步骤4.3,把步骤4.1或步骤4.2生成的代码写出到文件,生成源代码文件;
步骤5,添加顶层工厂类、编译并打包所生成的代码文件,以封装成一个二进制包作为发行包以供用户使用:
步骤5.1,在所述API顶层添加APIFactory类,为用户提供统一的操作入口;
步骤5.2,使用开源工具Ant提供的API,调用API完成包括代码文件的编译,打包以及说明文档的生成。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810112277.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:数字直放站系统及其工作方法
- 下一篇:一种汽车踏板的同步开关
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置