xml + xslt 实现网页多叉树展示

本文讲述了如何将Weka中j48算法的结果以树形结构在网页上展示。通过将结果转化为XML,利用XSLT转换为HTML,并结合table和JavaScript实现动态的树状展示。在遇到定位、划线和节点展开合并等问题时,作者通过计算节点高度、修改XML属性及使用session来解决,最终成功实现了功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:

需要把wekaj48算法以树形结构在网页展示,weka平台中的结果是文本形式的。

 

首先不知道从哪里下手,既然是要展示树,很自然的想到把结果数据转化成xml形式的。于是动手,很快在一天时间转化了出来。

 

接下来问题接踵而至。

最直接的问题是通过什么来展示他,jsphtml?还是什么,我乐观的认为不管用什么展示他,能找到一个例子就好了,可是事与愿违,即使在公司里,在全世界的网站上遨游,也没有找到直接的树形例子,真是鲜为人知,我几近崩溃,唯一的小收获是明白了通过xslt可以把xml的数据转化成任意形式的包括html,而且找到了一个通过这种技术来展示一个左边属性菜单的demo。通过这些收获我痛定思痛,决定自己来写出一个xmlt来把我的xml数据展示成多叉树。

 

Xslt语言怎么用呢?

如何在网页上划线呢?

所幸的是我很快找到了网页划线的demo.并且我认为xslt语言也不是问题,因为语言都不是什么大问题。

如何让线指向文字呢,文字如何定位呢,我想了又想,因为js水平实在有限,于是决定用table来定位。第一列用以划线,第二列用以显示内容,第三列的每一个td 用于存放其左边相应内容的子table

这样可以通过固定行高来得到划线终止位置

 

随着子孩子数据的增加,table的大小在改变,td的大小也在改变,这导致了划线的位置指到了莫名其妙的位置。如何动态计算变化的table

 

最后通过计算子节点的个数然后乘以子节点的高度来得到父节点的高度。当然就可以把线指向任何我想指的位置。

 

点了某节点如何展开与合并呢?

设置节点属性 id isleaf sutableDisplay

点击+

1. 修改该结点 isleaf 属性为0, 修改该节点子节点的 isleaf 属性值为 0

   设置每个结点一个id,读出放到input value 里面。

   js 通过得到input id 修改xml里面该id所对应的结点的 isleaf 属性

2. 修改该结点所指向的 table display属性为 block

3. 重新刷新网页

 

点击-

1.修改该节点isleaf 属性为1,修改所有子节点,及孙节点isleaf属性为0

2.修改其节点下面所有tabledisplay 属性为none

3.重新刷新网页。

 

至此认为一切ok,没想到客户端没法访问,仔细一看才发现我每点一次节点,都去修改了服务器xml文件,这是绝对不可以的。如何动态修改这些节点呢?

 

最后这样做:从weka直接得到doc,存入session,servlet里面得到doc,并作修改,再次修改并放到sesseion,同时向客户端输出html

 

大功告成。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值