图1(103页)所示为基于xml生成界面的大体流程,由 于本文选用pugixml库进行操作,因此在配置、加载以及修 改界面元素时均使用pugixml库的基本操作方法,下面详细 介绍。
pugixml提供几个函数用于从不同地方加载xml数据。 这 些 函 数 使 用 超 快 非 验 证 的 解 析 器 , 这 个 解 析 器 不 完 全 遵 照W3C标准,它可以加载任何有效的XML文档,但没有执 行某些well-formedness检查。虽然已经很努力来排除无效 的XML文档,但为了性能的原因有些验证没有完全执行。 一些XML转换(例如: EOL处理或属性值标准化)将导致解 析 速 度 下 降 , 因 此 不 进 行 这 些 验 证 。 对 于 绝 大 多 数 X M L 文档的不同解析选项, 并不存在性能上的差异。 pug i x ml 支 持 当 前 流 行 的 U n i c o d e
这些函数接受文件径作为第一个参数,包括两个可 选参数,一个用于指定解析选项,另一个指定输入数据的编 码类型。
从内存中加载文档,首先需要为XML数据提供一个连 续的内存块;然后调用缓冲区加载函数,如果需要,这些函数将处理编码转换,然后解析数据为XML文档树。
在XML描述界面信息的基础上,用XML的查询技术如 XQuery,XPath等进行模型信息的查询,可将之前系统开发 获得的界面信息用XML文件的形式存储起来,并且可以组 织形成一个界面信息库。对于界面信息的查询,可以分别从 名称、描述信息、XML文档中定义的元素和属性等关键字 进行查询,将此查询到的界面描述信息经过修改和扩展就可以加入到新工程的设计开发
修改节点、属性的数据,这些函数负责管理内存和结构的完 整性,因此操作之后总能保持树结构的有效性。然而,也有 可能创建一个无效的XML树(例如,添加两个相同名字的属 性或设置属性/节点的名字为无效的字符串)。对于属性的修 改,内存消耗和性能都是经过优化的,如果你有足够的内 存从头开始创建文档,稍后在保存它们到文件比起手写xml 文本没有太大的开销。所有改变节点/属性数据或结构的成 员函数都const的,因此不能在const类型的句柄上调用 它们。然后你可以轻易地转换const型句柄到非const型,仅 需要一个赋值操作,例如void foo(const pugi::xml_node& n) { pugi::xml_node nc = n; },因为常量的准确性在这里主要提供 作为参考文档而已。
图5、6为将XML参数修改之后的参数配置及其重新生 成的界面,和图2、3、4进行对比,可以看出,我们 将“设 备1”-“设备5”的名称变更为“设备更新1”-“设备更新
本文讨论的QT平利用XML技术进行界面的设计和 管理,主要利用pugixml库进行XML文件的具体操作,最终 成功生成界面。因此证明,基于XML 的用户界面管理系统 为软件开发提供了有效且有力的支持,通过该系统不仅可以 使用户界面描述信息与功能实现代码相分离,简化用户界面 的开发与,提高界面的开发效率,还可以使软件的最终 用户获得与开发人员相同的界面操控能力,在系统运行前和
推荐: