使用 XML 呈现树型结构
周融,2007 年 1 月
(C) 2007 All Rights Reserved.
在用户界面设计上,往往会遇到一种树型结构的数据源,在使用传统方法对这种被划分了父子关系的层次型数据源做呈现时,发现很难入手,甚至因为必须使用递归调用而造成整个应用程序的崩溃。本文介绍一种利用 XML 呈现树型结构数据源的方法和一个实例程序,供开发人员参考。
本文适用于:Web 用户界面;SQL Server 2005;ASP.NET 2.0;AJAX 1.0。
在本文中:
· 理解 XML
· 第一步:构建数据库存储结构
· 第二步:在数据库中使用 XML
· 第三步:构建用户界面
· 第四步:完成数据绑定
· 结论
理解 XML
XML 是一种 SGML 扩展,全称为可扩展标记语言,它是一种声明性语言,可用来表示如数据、配置信息、数据结构或当作呈现引擎使用。XML 被广泛的应用到各种数据存储和呈现上,如 HTML、Office 文档、程序配置,甚至存储在数据库中的数据,都含有 XML 的原形。事实上,人们可以利用 XML 做任何与数据打交道的事情。鉴于其与数据的紧密程度,人们也将 XML 称为 XML 数据库。
呈放 XML 数据的文档称为 XML 文档。XML 文档必须包含一个 <? ?> 标记,用来说明此 XML 文档的性质(如版本和编码),如果是类型化的 XML 文档,则每一个 XML 文档只能拥有一个顶层元素,XML 元素之间可以被嵌套;每一个 XML 元素节点可以拥有属性(Attribute)和数据区域(#InnerText 和 CDATA)。如下为一个规范的 XML 文档中的部分数据。
< Items >
< Item Name =”Console Root” Url =”~/admin/default.aspx” Description =”Console root” />
< Item Name =”Admins” >
< Item Name =”Home Page” Url =”~/admin/homepage.aspx” />
</ Item >
</ Items >
从 XML 本身的数据组织形式看,它有着天然的层次结构,这给树型结构的呈现带来了方便。
第一步:构建数据库存储结构
假设我们现在的场景是,在站点后台管理页面上的左边管理节点实现动态构建,即每一个管理单元都有父子关系并可以被自定义。这些数据从数据库中获取。效果请参见 http://zhourong/admin/,用户名和密码请使用 zhourong 和 orochi。
注意:您必须安装 Windows Internet Explorer 7 才能正常浏览此站点。
我们需要做的第一件事情就是构建这些管理单元在数据库中的存储结构。考虑到这些功能都属于系统设置部分,所以建立一张 SystemSetting 表,存放所有系统设置信息;又考虑到有些系统设置是 XML 数据,因此需要扩展一个 XML 格式的存储列。数据库表构建方法如下。
(
[ Key ] nvarchar ( max ) NOT NULL ,
[ Value ] nvarchar ( max ) NULL ,
[ XmlData ] xml NULL
PRIMARY KEY ( [ Key ] )
);
这样,就可以通过如下语句得到我们需要的 XML 数据。
第二步:在数据库中使用 XML
有了存储载体,下一步就应该向 SystemSetting 表插入数据了,注意,在插入 XML 数据时,不能使用 SQL Server Management Studio 直接插入,而需要利用脚本。下面是插入 XML 数据的方法:
VALUES (N’AdministrationItems’, NULL , ‘ < ?xml version = ” 1.0 ” < Items > … </ Items > ’);