当前位置:首页>网络学院>程序开发>XML教程>文章内容

从XML到Java代码的数据绑定之一

[ 来源:www.it55.com | 作者: | 时间:2007-07-14 | 收藏 | 推荐 ] 【

  对象,无处不在的对象

  在这个由四部分组成的系列文章的第一部分,我们将弄清什么是数据绑定,与在 Java 应用程序中处理 XML 数据的其它方法相比它有什么优势,以及如何开始使用它。这一部分将考查为什么使用数据绑定,以及如何为各种约束建立模型,使 XML 文档能转换成 Java 对象。同时还涵盖用于生成数据绑定类的输入和输出。

www.it55.com

  您希望在您的 Java 应用程序中使用 XML 吗?那么好,同成千上万的其他人一起上这条船吧。当您深入了解 XML 以后,也许您会发现 DOM 和 SAX API(请参阅参考资料)不过是唬人的东西。您可能认为肯定存在某种简单方法可以取得 XML 文档,并通过 Java 应用程序访问它,对吗?不必通过回调或复杂的树状结构,而是使用像 setOwner(Stringowner) 和 int getNumOrders() 这样的方法,对吗?如果您曾经沿着这一思路考虑问题,那么数据绑定就是您要寻找的解决方案。

  分析各种选择

  当今各种 XMLXML 主义正泛滥成灾(XSL、RDF、命名空间、RSS、XML Schema、XSLT...),您可能认为现在会有很多方法去访问 Java 应用程序中的 XML 数据。令人惊讶的是,如果您寻根究底,实际只存在三种访问 XML 数据的方法。没错 -- 只有三种方法,其中的一种还是最近随一种新的 Java API 才出现的。 www.it55.com

  应该这样来看待这一问题:选择范围小使您更易于选出适合于您的方法。

  回调

  回调是作为一种事件驱动模型工作的。当分析 XML 文档时,某些事件 -- 如文档的起始和某个元素中的字符数据的起始 -- 将触发回调方法。通过使用执行逻辑所需的数据,您可以实现这些事件的 Java 代码。要弄清这种方法不能全靠直觉;开发人员通常要花费一段时间来理解和掌握回调模型的使用。SAX,用于 XML 的一种简单 API,是这种 XML 使用方法的事实上的标准。

  树

  更常见、更流行的是这种 API,它们取得一个 XML 文档,然后创建数据的树状结构。XML 文档成为树首,充当一种容器。它有若干子级,如根元素。根元素又有其附加的子级,依此类推,直到(在某种意义上)获得 XML 数据的一幅图为止。因为几乎每个大学生在某个阶段肯定都处理过树状结构,所以这就可用作表示 XML 数据的一种非常直观的方法。

vd;k;l www.it55.com rdfg


  用于 XML 文档树状表示的最流行的 API 就是 W3C 的推荐标准,即文档对象模型 (DOM)。一种更新的 API,JDOM (这不是首字母缩写词)最近也正一直在推广并流行开来。(虽然这个方案是我和 Jason Hunter 建立的,但我还得说实话。)另外,DOM 和 JDOM 都是 Spinnaker 方案设计的基本要求,Spinnaker 是一种新的 XML 分析器,它作为 Apache XML 方案的一部分正在开发之中。

  虽然树状 API 看起来比事件驱动的 SAX 更易于使用,但它们并不总是合适的。非常大的文档可能需要大量的内存(尤其是使用 DOM 时);当对树结构执行转换 (XSLT) 时,系统可能停止运转甚至彻底崩溃。虽然更新的 API(如 JDOM)能处理这些问题,但如果您必须处理极大量的数据,它们仍将是一个问题。并且,有时开发人员宁愿将 XML 文档中的数据建模为一个简单的带有值的读写方法的 Java 对象,而不用树状模型工作。例如,开发人员会宁愿不去访问名为 skuNumber 的子节点并设置该节点的文本值,而只想调用 setSkuNumber("mySKU") 并继续进行。

IT资讯之家 www.it55.com



  免费资源www.it55.com

 术语解释

  数据绑定:从 Java 应用程序内部访问 XML 数据的一种新方法,使用仍在开发中的一种 API,JSR-031。

  JSR-031: Sun 仍在开发中的一种新的 Java 规范请求,设计用于将 XML 文档编译成一个或多个 Java 类,而在 Java 应用程序中可以方便地使用这些 Java 类。

  打包:将 Java 对象转换为 XML 表示,拥有当前值。 it55.com

  解包:根据 XML 对象创建 Java 对象,通常是根据打包生成一个 Java 对象。

 


  用 Java 代码访问 XML 数据的最新方法要依赖于一套新的 Java 方法和相关的 API,这些 API 仍在开发之中。数据绑定是由 Sun 构建的一种“Java 规范要求”(JSR-031,见参考资料),它设计用于使 Java 对象绑定到 XML 文档更加方便,这样就使一种格式能够容易地转换为另一种格式,反之亦然。绑定引用一个具有读写方法的 Java 对象,读写方法都会影响到底层的 XML 文档,并且也都直接映射为 XML 文档中的元素及特征的名称。当您进入到本系列文章下一部分中的某些细节时,这一说明会更有意义,但在目前,只说一点就够了:这样做使 XML 文档特征 name 能够通过一个称为 setName() 的方法,来更改它的值,就像我上面暗示的那样。

sflj www.it55.com kg^&fgd


  数据绑定

  这种访问方式正在得到普及,并且当在 XML 文档中存储配置信息时特别有用。许多开发人员发现,它非常便于直接访问所需的参数,而无须使用更复杂的树状结构。虽然这种访问对于文档转换或消息传送没有什么用处,但它对于简单数据处理是极其方便的。它是我们在本文及本系列文章中关注的第三种使用 XML 的方法。

  (当然,任何方法随后都会引出一系列新的术语,所以请查看术语解释以了解这些新的行话。)

  是否任何 XML 文档都可以转换为 Java 对象?还是仅有某些类型的 XML 文档才可以?问得好!您很可能只希望将满足一组约束条件的文档转换为 Java 对象。这与定义 Java 接口的方法类似:您确保只实例化和使用适应该接口的对象,允许就如何操作该对象作出假定。同样,您只允许将满足一组约束条件的 XML 对象转换成 Java 对象;这使您能够按希望的方式来使用所创建的对象。 vd;k;l www.it55.com rdfg

  约束数据

  在研究代码之前,您需要回答几个有关如何表示 XML 数据的问题。这是数据绑定的最具挑战性的方面之一。是为每个文档创建一个新类,还是创建某个现有类的一个实例?您要使用哪个现有类?并且最重要的是,您正在处理的文档是否适宜转换为 Java 对象?

  那是一大堆问题,但您将在这里找到全部答案。将这些问题看作一系列决策点,一系列选择。首先,您必须确定您能否从该 XML 文档创建 Java 对象(如前面所讨论的那样)。如果能,您就要决定转换应该以新 Java 类的形式出现,还是仅以现有类的一个实例的形式出现。最后,如果选择了现有类,那么使用哪个类呢?结果就是各种各样的决策树。

(编辑:IT资讯之家 www.it55.com

返回顶部
共3页: 上一页 1 [2] [3] 下一页  

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]

图片文章