快速业务通道

从XML到Java代码的数据绑定之一 对象,无处不在的对象 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
文档就会发现,它表示一个对象(总体配置对象),具有若干特征或变量。其中某些变量又是另外的对象(端口和文档),这些对象又具有它们自己的特征。实际上,这是适合转换为 Java 对象的 XML 文档的一个极好例子。为了进一步保证此对象是可用的,稍后我将向您展示一种方法来约束文档中的数据。但是,还是先让我们继续沿着决策树往下走。

转换成类还是实例?

解决适宜性问题以后,现在就可以作出决定,是将每个 XML 配置文档都变为一个全新的 Java 类呢,还是简单地将其变为某个现有类的一个新实例。换句话说,就是到底应该生成新代码,还是利用现有的代码。照这样来看,这就变成了一个简单的可重用性问题。更容易且更明智的做法是,为每个 XML 文档生成现有类的新实例。如果您 一定要尝试一下从每个文档创建一个新的 Java 类,则得到的各个类之间可能没有兼容性 -- 即两个完全相同的文档可能导致两个不同的 Java 类!

不用这个可能引起混乱的方法,您可以采用一组 XML 约束条件(由一个 DTD 或 XML 方案表示,将在下面讲述),并根据这些约束条件来生成一个 Java 类(或多个类,根据需要)。这个生成的类将表示符合这些约束条件的任何 XML 文档;这些 XML 文档中的每一个都将被解包到生成的类的一个实例中。在这种情况下,就可以为表示 web 服务配置的文档定义约束条件。 这些约束条件将被映射为一个 Java 类,我们将称之为 WebServiceConfiguration 。 然后您就可以获得任何一种表示特定 web 服务配置的 XML 文档,并假定此文档符合我们的约束条件,由它而创建出前面生成的类的一个实例。这将允许应用程序将不同的 XML 文档用作相同类型的对象,只要这些文档中的数据对于该对象设计时要达到目的来说是有效的即可。

新类还是现有的类?

现在您也已经有条件回答下一个问题了:您希望创建一个现有类即 WebServiceConfiguration 类的一个实例。剩下需要弄清的全部事情是,这个类是如何预先生成的。 所以,现在请将您的注意力集中在这样一个问题上:如何获得一组约束条件,用 XML 实现它们,并保证文档符合这些约束?再一个问题就是,您如何再从这些约束条件生成一个可重用的 Java 类?

从XML到Java代码的数据绑定之一 对象,无处不在的对象(3)

时间:2010-12-02

利用文档约束条件

既然您知道此文档将转换成一个 Java 实例,这就产生了另一个问题:要考虑到必须以某种方式保证可将此文档正确地解包到一个选定的 Java 类中。缺少变量或数据类型不正确都可能导致在解包过程中出错 -- 或者甚至在客户机访问配置错误的容器时出现运行时异常。

最好的情况是,在实际的解包过程开始之前,文档的作者能够保证,配置文档对于他们选择用来表示数据的类是“合法的”。阅读到这一方案的 XML 人士说不定就会转动他们的眼睛并嘀咕说,“好吧,当然您将使用 XML 文档约束条件。”确认数据对选定类的合法性可以通过引用 DTD (文档类型定义)或 XML 方案来完成。

通过使用一组用外部 DTD 或方案文件表示的约束条件,文档作者就可以在这些数据的“接口”上测试配置数据。换句话说,您可以这样来建立应用程序,使之能够对照所需的数据来检查包含在 XML 实例文档中的数据,而所需数据则是在文档约束条件的外部文件中指定的。 这样,您就可以为数据创建一个接口。

在使用 DTD 方案还是使用 XML 方案之间作出决策是一种相当简单的选择:因为 Java 语言是高度类型化的,所以我们希望能在 XML 文档中支持类型化。例如,数据接口应该能够验证,为 web 容器的端口号提供的是整数,而不是字符串,后者在服务启动时将引起错误。DTD 不支持类型检查,所以我们无疑应该选择 XML 方案。虽然 XML 方案在规范的领域在

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号