当前位置: 首页 > 专利查询>BEA系统公司专利>正文

用于排列和解排列XML和Java中的数据类型的系统和方法技术方案

技术编号:2851886 阅读:204 留言:0更新日期:2012-04-11 18:40
XML类型的使用可以准许XML类型系统和Java类型系统的组合,这通过将在XML文件中定义XML数据的XML模式翻译为在Java中的XML类型,克服了现有排列和解排列系统中的很多缺陷。与在XML和Java之间进行翻译的传统尝试不同,实现为XML类型的XML模式可以完全忠实于XML,并能进行很多XML数据操作。此外,XML类型可以在它们自身和Java类型之间转换,并且以标记级别保留XML信息的轻便存储器准许增量的XML排列和解排列。该说明不是为了穷尽本发明专利技术的描述或限制本发明专利技术的范围。本发明专利技术的其它特征、方面和目的可以从说明书、附图以及权利要求的查看中获得。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术涉及数据和数据类型的转换。
技术介绍
当前在不同的数据类型间转换或排列数据的方式上存在某些缺陷。在现有系统中,用户启动现有的Java类型并要求系统生成反映Java类型的XML模式,进而将Java数据排列成自动生成的XML。大多数排列XML的产品都通过编译器(例如从Java到WSDL的编译器)运行,以生成XML模式(schema)。这种方法的缺陷之一是只针对从Java到XML的情况。当前的工具不是特别擅长于采用现有XML模式并将整个模式转换成使用方便的Java类型。当前排列技术的另一个问题出现在用户只想查看一小块XML数据的时候。用户可能希望在不处理该XML数据块的情况下就跳转至其余的XML数据。当前排列技术在简单跳转至其余数据方面不是很有效。通常,在不同的排列之间跳转是很复杂的,因为不是XML中的所有语义都能很容易地在Java中捕获。如果用户输入消息,更改该消息的一小部分,并试图将该消息作为XML重新发送,则除了该被用户更改部分外的其它部分将变得不同,从而丢失很多其它信息。例如,如果XML含有通配符属性或元素,则这些通配符不会被保留。关于元素顺序的信息可能也会丢失或被扰乱,如果模式对元素顺序很敏感的话这就成为一个问题。附图说明图1示出根据本专利技术实施例的示例XML模式定义文件。图2示出根据本专利技术实施例的、用于XML排列和解排列(marshaling andunmarshaling)的示例系统的框图。图3示出由可以用于根据本专利技术实施例的XML模式编译的XML类型的示例代码。图4示出可以用于根据本专利技术实施例的基于注释的格式的示例代码。图5示出可以用于根据本专利技术实施例的实现Web服务的示例代码。图6示出可以用于根据本专利技术实施例的类型转换的示例代码。图7示出可以用于根据本专利技术实施例的用于默认类型申明的示例代码。图8示出可以用于根据本专利技术实施例的用于XML转换的示例代码。图9示出可以用于根据本专利技术实施例的用于XML转换的示例代码。图10示出可以用于根据本专利技术实施例的示例XML转换系统的框图。图11示出可以用于根据本专利技术实施例的用于XML存储的示例系统的框图。图12示出可以用于根据本专利技术实施例的用于XML模式的示例系统的框图。图13示出根据本专利技术实施例的用于XML类型的示例系统的框图。图14示出根据本专利技术实施例的示例分层结构图。具体实施例方式以下用示例而非限制为附图的方式说明本专利技术,附图中相似的附图标记表示相似的部件。应当注意,本公开文献中“一”或“一个”实施例不一定指同一实施例,这样描述的意思是至少一个。根据本专利技术一个实施例的系统和方法通过在XML和Java之间排列数据时将在XML文件中定义XML数据的XML模式翻译为Java中的XML类型,克服了现有排列和解排列系统中的很多不足。XML类型实际上是除了常规Javabean功能和访问数据库之外还能以有效的、类型安全的、鲁棒和方便的方式访问和更新Java内XML数据的Java类型。在至少一个实施例中可以使用的体系结构能够处理几乎100%用户引入的模式。XML类型的使用准许将XML类型系统和Java类型系统组合在一起。这可以通过准许开发者实现松耦合来完成。作为XML类型实现的XML模式可以完全符合XML。开发者很容易控制现有Java类型和现有XML类型之间的精确转换。通过同时采用几种技术,包括例如强烈类型化为从Java访问XML数据文件的模式意识、紧密和有索引的存储器内XML存储、快速和最小(推进)分析和(二进制)序列化、轻便的文件光标移动、XPath和XQuery导航和转换、以及无缝Java IDE集成,XML类型可以涉及Java/XML分界。对于面向XML的“XML通过Java代码至XML”的例子,图1示出可以用于根据本专利技术实施例的简单示例XML模式定义(XSD)文件。该特定XML模式描述一个购买订单的类型。该模式可以是由模式工具生成或由用户创建的预先存在的文件。在本例中,可能需要“清除”或“固定”无效的XML购买订单信息。在XSD顶层是针对名为“购买订单”的元素的模式定义。该元素被定义为复合类型,并包含名为“排列项目(line-item)”的元素。将“maxOccurs”属性设置为“unbounded”,意思是该排列项目可以重复任意次数。每个排列项目具有4个子元素desc,itemid,price,qty。子元素desc表示是字符串的描述元素,itemid表示是整数的项目标识符元素(类型为int),price表示是浮点数的价格元素(类型为float),qty表示是整数的数量元素。这些子元素都是模式的内置类型。该模式基本上描述或表现一个有效购买订单是什么样子。为了采用XML类型编程,可以将XML模式文件添加到Java方案中。用于XML排列和解排列的系统示例在图2中示出。在一个实施例中,该系统可以用不仅知晓如何编译Java方案101、还能编译XSD文件102的编译器100处理该文件。在编译XSD文件时,除了常规Java类型104之外还能生成很多XML类型103。然后可以将这些XML类型添加到类路径(classpath)中。例如,名为“购买订单(puchase order)”的XML类型可以从名为“购买-订单(puchase-order)”的模式类型来生成。表示用图1中的示例模式编译的XML类型的Java源代码在图3中示出,其中生成这些Java类型的来源是模式文件本身。名为LineItem的类型对应于嵌入XSD文件中的购买订单元素内的排列项目元素。在Java中,XML排列项目元素可以转换为类似的东西。可以为一个类型中的每个元素生成Java文件。例如,对于XSD中的desc元素,在每个排列项目的生成类型中都存在对应的getDesc和setDesc方法。对于整个购买订单,用户可以获得或发送个别排列项目。所生成类型的名称可以自动地从模式名称中推导出来。每个生成的类型都可以注解上其来源的相关模式名称。每个类型还可以扩展现有XML类型。在一个实施例中,XML类型可以实现名为XMLObject的通用基本XML类型。该XML类型可以执行多个面向XML的数据操作,并在此称为XBean。XBean不是标准的Java bean,而是从XMLObject继承而来的XBean。XMLObject是与众不同的,因为XMLObject作为XML类型为每个XBean提供了检索其原始或对应XML的方法。XBean可以被认为是用于表达数据(例如业务数据)的Java类型的设计模式,这些数据可以序列化以及去序列化为XML,并且能从Java以类型安全的方式访问。XBean还可以被认为是自然语言的习惯用语的一个小子集,是经过注释的Java或非Java,用于生成这些类型。通常,当应用程序开发者或组件开发者决定如何表示业务数据时存在一个折衷。如果该数据表示为类型安全的Java,则难以序列化为XML或数据库。如果数据表示为XML,则难以转换为Java类型。如果数据在来自数据库的一个结果子集中,则对于转换为任意一种其它类型来说存在同样的情况。因此,有利的是提供单一种类的Java类型,其能作为XML和Java方便地传递、使用和操作。有利的还有同一类型便于数据库访问和格式输入及验证。如图2所示本文档来自技高网...

【技术保护点】
一种在XML和Java之间排列和解排列数据的系统,包括:XML数据;定义XML数据的XML模式;XML类型,其是可以在Java内访问XML数据的Java类型;以及可以从XML模式生成XML类型的编译器。

【技术特征摘要】
【国外来华专利技术】US 2003-1-24 60/442,673;US 2004-1-22 10/762,8141.一种在XML和Java之间排列和解排列数据的系统,包括XML数据;定义XML数据的XML模式;XML类型,其是可以在Java内访问XML数据的Java类型;以及可以从XML模式生成XML类型的编译器。2.根据权利要求1所述的系统,其中所述编译器可以基于Java万维网服务方法的定义来生成XML类型。3.根据权利要求1所述的系统,其中所述编译器可以基于定义文件来生成XML类型。4.根据权利要求1所述的系统,其中所述编译器可以将Java方案编译成一个或多个常规Java类型。5.根据权利要求1所述的系统,其中所述XML类型可以是可移动光标,能在XML数据内的任意地方进行读取。6.根据权利要求1所述的系统,其中所述XML类型可以是不可移动值,能引用XML数据的固定部分。7.根据权利要求1所述的系统,其中所述XML类型可以在多个Java组件之间共享。8.根据权利要求1所述的系统,其中所述XML类型可以在Java内更新XML数据。9.根据权利要求1所述的系统,其中所述XML类型可以使用Java类型方法来访问和更新Java数据。10.根据权利要求1所述的系统,其中所述XML类型可以访问和更新数据库。11.根据权利要求1所述的系统,其中所述XML类型可以进行多个XML数据操作,包括查询XML数据、在XML类型之间转换、以及在XML数据文件上进行迭代。12.根据权利要求1所述的系统,还包括可以定义XML数据的合法类型的XML模式,该合法类型包括对数据类型和数据范围的约束;以及对数据类型和XML类型范围的约束。13.根据权利要求12所述的系统,其中所述编译器可以由关于XML数据的合法类型的XML模式生成XML类型的约束。14.根据权利要求12所述的系统,其中所述对XML类型的约束可以验证该XML类型。15.一种在XML和Java之间转换类型的系统,包括Java类型;XML类型,其是可以在Java内访问XML数据的Java类型;以及可以将源类型转换为目标类型的XML转换,其中所述源类型和目标类型可以是XML类型或Java类型。16.根据权利要求15所述的系统,还包括XML转换的全局记录,可以查询在源类型和目标类型之间的现有XML转换。17.根据权利要求15所述的系统,还包括XML转换库,可以在源类型和目标类型之间通过名称来查询现有的XML转换。18.一种在XML和Java之间排列和解排列数据的系统,包括XML数据;可以将XML数据作为可搜索索引保持的轻便XML存储器;XML类型,其是可以在Java内引用该轻便XML存储器并访问XML数据的Java类型。19.一种在XML和Java之间排列和解排列数据的系统,包括XML数据;可以将XML数据保持在文本或标记级别的轻便XML存储器;XML类型,其是可以在Java内引用该轻便XML存储器并访问XML数据的Java类型。20.根据权利要求19所述的系统,其中所述轻便XML存储器可以将保持的XML数据表示为分层结构。21.根据权利要求20所述的系统,其中所述分层结构可以是树。22.根据权利要求19所述的系统,其中所述XML类型可以增量地访问XML数据。23.一种用于在XML和Java之间排列和解排列数据的方法,包括用XML模式定义XML数据;在Java内通过XML类型访问XML数据;以及用编译器从XML模式中生成XML类型。24.根据权利要求23所述的方法,还包括基于Java万维网服务方法的定义来生成XML类型。25.根据权利要求23所述的方法,还包括基于定义文件来生成XML类型。26.根据权利要求23所述的方法,还包括将Java方案编译为一个或多个常规Java类型。27.根据权利要求23所述的方法,还包括将所述XML类型用作可移动光标来在XML数据内的任意地方进行读取。28.根据权利要求23所述的方法,还包括将所述XML类型用作不可移动值来引用XML数据的固定部分。29.根据权利要求23所述的方法,还包括在多个Java组件之间共享所述XML类型。30.根据权利要求23所述的方法,还包括在Java内通过所述XML类型更新XML数据。31.根据权利要求23所述的方法,还包括使用Java类型方法来访问和更新Java数据。32.根据权利要求23所述的方法,还包括通过所述XML类型来访问和更新数据库。33.根据权利要求23所述的方法,还包括通过所述XML类型来利用多个XML数据操作,这些操作包括查询XML数据、在XML类型之间转换、以及在XML数据文件上进行迭代。34.根据权利要求23所述的方法,还包括通过XML模式定义XML数据的合法类型,该合法类型包括对数据类型和XML数据范围的约束。35.根据权利要求34所述的方法,还包括由关于XML数据的合法类型的XML模式生成数据类型和XML类型范围的约束。36.根据权利要求34所述的方法,还包括利用所述对XML类型的约束来验证该XML类型。37.一种在XML和Java之间转换类型的方法,包括采用...

【专利技术属性】
技术研发人员:戴维鲍
申请(专利权)人:BEA系统公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1