快速业务通道

创建一种声明性XML UI语言 - 用Java语言构建一个UI和配套框架 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
4 中每个加注释的数字,但代码展示了两个额外步骤(检索对 XUI 根节点的引用和将 DOM 编组到文件)。这些步骤是:

文档对象模型(Document Object Model)是什么?

文档对象模型(简称 DOM)是 XML 元素到内存对象(由 API 提供)的映射,这种映射允许程序员将 XML 数据读入内存对象(称为解组),操作数据,然后将数据写回到 XML(称为编组)。最著名的常用 DOM 是 W3C DOM。

图 1 展示了以下步骤:

从 BuilderFactory 检索一个 Builder。

在允许检索一个 XUI 文档之前,Builder 首先确保 XML 文档已经被验证和解析。如果解析或验证失败,将出现一个 XUIParseException,框架将停止文档加载。

Builder 创建 DOM,其中的对象反映读入的XML 元素。

Realizer 对象(在内部由 XUI 对象调用)被实例化并准备执行下一步。

Realizing 是框架根据预先创建的XML 节点层级(框架引擎的真正核心)创建 GUI 组件层级的地方。

使用 Java 环境中的power of reflection,模型逻辑(应用程序中驱动 UI 的部分)被绑定到刚才实现的GUI 组件。

图 1. XUI API 用于构建 GUI 的框架流和详细步骤视图

这个共包含 6 个步骤的调用流易于使用,但其中包含大量信息和对象实例化,值得仔细研究。这个框架的核心位于步骤 5 和步骤 6。

创建一种声明性XML UI语言 - 用Java语言构建一个UI和配套框架(6)

时间:2011-01-28 IBM Arron Ferguson

GUI 组件 & XML 节点构成

在 图 1 中,步骤 5 创建了一个组件模型,支持将这个 XML 节点(现在是内存对象)和一个 GUI 组件组成一对。这种配对需要非常严格地同步以下事件:

对于框架读入的每个 XUINode(表示任意 XML 元素的内存对象),必须创建一个 XUIComponent 来包围 XUINode。

对于在内存中创建的每个 XUIComponent,必须创建一个 GUI 对等物,比如 javax.swing.JFrame。

每当一个 XUIComponent 实例 — 或它的一个子类型(比如 XUIButton)— 被修改时(比如修改大小),XUIComponent 必须确保 XUINode 和 GUI 对等物同时、同等地更新。

通过满足上述要求,这个框架允许程序员将多个 XML 文档读入内存(解组),修改 DOM,然后将更改保存回一个 XML 文档(编组)。程序员甚至可以以编程方式创建几个新的DOM 并对它们进行编组。

DOM 节点编组

这个框架提供了一个 toString 方法(见 清单 5),以便 XUINode 将自身编组为 XML。根节点可以包含多个子节点,子节点可以包含自己的子节点,依次类推。通过调用根级别节点的toString 方法,这个框架可以轻松编组整个 XML 文档。名称空间被添加进来,以便每个元素知道自己在层级中的级别(通过 level 变量)。这样,当 toString 方法被调用时,它可以实现缩进,以使这些文档更易于阅读。

清单 5. XUINode toString 方法实现

@Override public String toString() {    StringBuffer sb = new StringBuffer();    String namespacePrefix = "";    // insert indenting ... 2 spaces for now.    if(isRoot) {      sb.append(XMLPI + "\n");      sb.append(API_COMMENT + "\n");    } else {      sb.append("\n");      for(int s = 0; s < level; s++) {        sb.append(" ");      }    }    sb.append("<");    // get namespaces for this node    Enumeration keys = nameSpaces.keys();    String names = "";    while(keys.hasMoreElements()) {      String uri = (String)keys.nextElement();      String prefix = (String

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号