js动态树解析xml 哪你是不是要先找出父类id=parentid的节点名称呀! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哪不也进行了一次DOM装载么?遍历很深的可以用sax呀 主要原因可能在dom生成页面的时候慢,你可以测试一下 加载10000个node 和10000个documentElement哪个更费时间var ss=new Date();var thisNod=null;function Node(id){this.id=idthis.ch={};}for(var i=0;i<10000;i++){var cc=new Node(i);if(thisNod!=null){thisNod.ch["key"+i]=cc;}else{thisNod=cc;}}var en=new Date();document.write(en-ss);for(var i=0;i<10000;i++){var ele=document.createElement("div");ele.innerHTML=i;ele.style.display="none";document.body.appendChild(ele);}ss=new Date();document.write("<br>"+(ss-en));在这里,你可以利用惰性加载技术.将数据模块和显示模块分开加载.先将xml格式化成树型结构.这是数据模块所要做的然后只将树型结构的第一层装载成dom可能是div或其他最后当事件触发(比如点击页面结点元素)的时候再进行此结点所对应子树的页面加载. 可以!可以用jquery的ajax的get,不断地get你点击的那个节点的下面的一个动态生成的xml就可以了,我这次的项目用到了好多这样的。 本身xml就是一个树形结构,干嘛还定义这样原始的id+parentid结构。 LZ还没习惯XML的树型编程.也有可能这XML是服务器端生成的,服务器端的条件容易输出dom吧 既然性能上出现问题就别用xml了,改用数据库吧然后用ajax提取你想要的数据 这些数据不是存放在关系型的数据库里面,而是lotus 数据库(目录二叉树形式结构)。 JSON也是一个不错的选择,XML读取量太大。只是建议!!! <rootnode> <parentnode id="n1"> <name>OU=ABC</name> <parentnode id="n2"> <name>OU=abc</name> <parentnode id="n3"> <name>CN=zhangsan</name> <parentnode id="n4"> <name>OU=aa</name> <leafnode id="n7"> <name>CN=a1</name> </leafnode> <leafnode id="n8"> <name>CN=a2</name> </leafnode> </parentnode> <parentnode id="n5"> <name>OU=bb</name> <leafnode id="n9"> <name>CN=b1</name> </leafnode> </parentnode> <parentnode id="n6"> <name>OU=cc</name> <leafnode id="n10"> <name>CN=c1</name> </leafnode> </parentnode> </parentnode> </parentnode> </parentnode></rootnode>改变原xml的结构(如果无法改变,那么自己转化一下吧),改成如上结构,自然就是方便解析了 改变XML结构也是个不错的选择,应该按照你程序的逻辑编写 进行修改XML结构,这样的话 应该不麻烦吧! js打印去掉页脚页眉问题 有没有学习js高级的文档或是好的网站,总感觉用的时候不够用,谢谢 微软的人力方展示的flash好做吗? google这个乱码(加密)如何显示成为中文? js代码不兼容Firefox,怎么改? 关于动态建元素的问题 关于工作的问题,大家给出出主意啊 请问如何实现ie工具条上鼠标移上去是突出的效果 能不能在<iframe>里打开一个页面 如何人在模擬鍵盤按鍵? javascript 如何压缩 access 如果让IE7不会禁止访问计算机的脚本?
你可以测试一下 加载10000个node 和10000个documentElement哪个更费时间var ss=new Date();
var thisNod=null;
function Node(id){
this.id=id
this.ch={};
}
for(var i=0;i<10000;i++){
var cc=new Node(i);
if(thisNod!=null){
thisNod.ch["key"+i]=cc;
}else{
thisNod=cc;
}
}
var en=new Date();
document.write(en-ss);
for(var i=0;i<10000;i++){
var ele=document.createElement("div");
ele.innerHTML=i;
ele.style.display="none";
document.body.appendChild(ele);
}
ss=new Date();
document.write("<br>"+(ss-en));在这里,你可以利用惰性加载技术.
将数据模块和显示模块分开加载.
先将xml格式化成树型结构.这是数据模块所要做的
然后只将树型结构的第一层装载成dom可能是div或其他
最后当事件触发(比如点击页面结点元素)的时候再进行此结点所对应子树的页面加载.
然后用ajax提取你想要的数据
<parentnode id="n1">
<name>OU=ABC</name>
<parentnode id="n2">
<name>OU=abc</name>
<parentnode id="n3">
<name>CN=zhangsan</name>
<parentnode id="n4">
<name>OU=aa</name>
<leafnode id="n7">
<name>CN=a1</name>
</leafnode>
<leafnode id="n8">
<name>CN=a2</name>
</leafnode>
</parentnode>
<parentnode id="n5">
<name>OU=bb</name>
<leafnode id="n9">
<name>CN=b1</name>
</leafnode>
</parentnode>
<parentnode id="n6">
<name>OU=cc</name>
<leafnode id="n10">
<name>CN=c1</name>
</leafnode>
</parentnode>
</parentnode>
</parentnode>
</parentnode>
</rootnode>改变原xml的结构(如果无法改变,那么自己转化一下吧),改成如上结构,自然就是方便解析了