利用xml的树形菜单大体有两种方式,
1是分层加载节点的
优点,节省资源,减轻服务器压力,和客户端的解析时间。
当菜单数据量很大的时候,这种方式比较适合。xml数据是线性的,容易生成。
缺点 ,展开节点时候,需要再请求服务器读取此层节点下面的字节点。
2是一次性加载节点的
优点,加载后操作顺畅;数据库中的结构全部表现在客户端,有利于客
户端脚本对数据的深层次分析。
缺点,当有大批数据时候,加载速度会比较慢。xml数据是递归的,编码复杂。
今天大体讲解一下第一种xml树形菜单 ---- 分层加载的树形结构。
在数据库中,最为常见的树形结构的存储方式是把所有的节点放在一张表中,
每个记录有一个parentId(父亲节点ID),
得到某个节点的所有子节点 : select * from [table] where parentId = ID
因为我们的xml中每个节点上必须有一个nodeId属性,在数据库中也就是他的ID。
另外我们还要知道某个节点是不是叶子,以通知解析程序这个节电是否具备展开的能力。
所以我们的xml如下:
[---演示页面---][---下 载---]