ajax 读XML文件 生成目录树 但是 xml文件太大了,
有135K 9000多行.
生成树的时间太慢了 ,火狐特慢,象死了一样
问有提速的方法
function loadzapp(xmlurl)
{
if (window.ActiveXObject)
xmlzapp=new ActiveXObject("Microsoft.XMLHTTP");
else if(window.XMLHttpRequest)
xmlzapp=new XMLHttpRequest();
xmlzapp.onreadystatechange=onhandzapp
xmlzapp.open("GET",xmlurl,true)
xmlzapp.send(null)
}
function onhandzapp(){
if (xmlzapp.readyState==4&&xmlzapp.status==200)
{
resxml=xmlzapp.responseXML;
deNode=resxml.getElementsByTagName("ZAPP")[0];
var tree="";
var sum=1
czapp=switchTree(deNode,tree,sum,"");//遍历整个树,生成树结构 ,
}
}
11 个解决方案
#1
分页显示,或用json可能还快一些,
#2
用JSON真的比XML快点吗?有谁用过,举个例子。
#3
服务器端改造一下,每次拿一级,点击节点再拿下级。
这样做更符合AJAX的思想。我们不能假设用户什么都要,用户需要的只是我们能够提供的一部分,既然如此,那就由用户来决定我们拿哪些东西吧。
这样做更符合AJAX的思想。我们不能假设用户什么都要,用户需要的只是我们能够提供的一部分,既然如此,那就由用户来决定我们拿哪些东西吧。
#4
数据量太大的话一部分一部分来加载,先加载需要的,然后用setTimeout/setInterval来分时间段加载
#5
xml就是太大了
json并非一定最快,但是json的方式是最快的,就是脚本融合
直接解析为js内置对象.
json并非一定最快,但是json的方式是最快的,就是脚本融合
直接解析为js内置对象.
#6
json能象XML进行遍历吗??
#7
遍历,没问题啊
json进入js环境后,就当成对象来用就OK了,对象下面有属性,属性还可以是包含对象的集合,呵呵
当成数组遍历即可
json进入js环境后,就当成对象来用就OK了,对象下面有属性,属性还可以是包含对象的集合,呵呵
当成数组遍历即可
#8
七楼的举个例子,来说明一下。
#9
给你一个例子,可能不是很恰当啊
不是标准的JSON格式,这是我以前用的一种格式,后来看到JSON的介绍,类似,知道原理就好了
//{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}
//以上是服务器返回的数据
var BabyMap;
eval("BabyMap=" + "{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}");
alert(BabyMap["R_0"]);//数组方式访问
alert(BabyMap.R_1);//属性方式,不过没有用数组索引的方式灵活,适合有固定属性的对象.
for(x in BabyMap)alert(BabyMap[x]);//for in 遍历
可以用类似属性的方法直接访问,也可以用for遍历
如果数据结构考虑周全,可以避免一部分遍历,如果效率要求很高,就考虑考虑数据如何组织吧
希望对你有所帮助
//测试全文 保存为xx.html浏览,见效果,^_^
<script language="javascript">
var BabyMap;
eval("BabyMap=" + "{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}");
alert(BabyMap["R_0"]);
alert(BabyMap.R_1);
for(x in BabyMap)alert(BabyMap[x]);
</script>
不是标准的JSON格式,这是我以前用的一种格式,后来看到JSON的介绍,类似,知道原理就好了
//{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}
//以上是服务器返回的数据
var BabyMap;
eval("BabyMap=" + "{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}");
alert(BabyMap["R_0"]);//数组方式访问
alert(BabyMap.R_1);//属性方式,不过没有用数组索引的方式灵活,适合有固定属性的对象.
for(x in BabyMap)alert(BabyMap[x]);//for in 遍历
可以用类似属性的方法直接访问,也可以用for遍历
如果数据结构考虑周全,可以避免一部分遍历,如果效率要求很高,就考虑考虑数据如何组织吧
希望对你有所帮助
//测试全文 保存为xx.html浏览,见效果,^_^
<script language="javascript">
var BabyMap;
eval("BabyMap=" + "{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}");
alert(BabyMap["R_0"]);
alert(BabyMap.R_1);
for(x in BabyMap)alert(BabyMap[x]);
</script>
#10
xml的冗余是没有办法的事情,其他表示方法,如果要表示清楚,肯定也要多不少东西
所以如果要让数据小,再小,就考虑不要用那么详细的表示了,比如xml中定义为<ClientName>的标签,改为C1
如果嫌xml解析慢,就不要用xml,或者看看你的程序,解析的多了自然慢,如果觉得有些东西你没法控制
那就自己组织数据.效率要求高了,可以暂时不考虑什么易读不易读,对人易读的东西,对机器不一定易读.
自己把握这个尺度就可以了,^_^
所以如果要让数据小,再小,就考虑不要用那么详细的表示了,比如xml中定义为<ClientName>的标签,改为C1
如果嫌xml解析慢,就不要用xml,或者看看你的程序,解析的多了自然慢,如果觉得有些东西你没法控制
那就自己组织数据.效率要求高了,可以暂时不考虑什么易读不易读,对人易读的东西,对机器不一定易读.
自己把握这个尺度就可以了,^_^
#11
lz要干嘛?
#1
分页显示,或用json可能还快一些,
#2
用JSON真的比XML快点吗?有谁用过,举个例子。
#3
服务器端改造一下,每次拿一级,点击节点再拿下级。
这样做更符合AJAX的思想。我们不能假设用户什么都要,用户需要的只是我们能够提供的一部分,既然如此,那就由用户来决定我们拿哪些东西吧。
这样做更符合AJAX的思想。我们不能假设用户什么都要,用户需要的只是我们能够提供的一部分,既然如此,那就由用户来决定我们拿哪些东西吧。
#4
数据量太大的话一部分一部分来加载,先加载需要的,然后用setTimeout/setInterval来分时间段加载
#5
xml就是太大了
json并非一定最快,但是json的方式是最快的,就是脚本融合
直接解析为js内置对象.
json并非一定最快,但是json的方式是最快的,就是脚本融合
直接解析为js内置对象.
#6
json能象XML进行遍历吗??
#7
遍历,没问题啊
json进入js环境后,就当成对象来用就OK了,对象下面有属性,属性还可以是包含对象的集合,呵呵
当成数组遍历即可
json进入js环境后,就当成对象来用就OK了,对象下面有属性,属性还可以是包含对象的集合,呵呵
当成数组遍历即可
#8
七楼的举个例子,来说明一下。
#9
给你一个例子,可能不是很恰当啊
不是标准的JSON格式,这是我以前用的一种格式,后来看到JSON的介绍,类似,知道原理就好了
//{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}
//以上是服务器返回的数据
var BabyMap;
eval("BabyMap=" + "{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}");
alert(BabyMap["R_0"]);//数组方式访问
alert(BabyMap.R_1);//属性方式,不过没有用数组索引的方式灵活,适合有固定属性的对象.
for(x in BabyMap)alert(BabyMap[x]);//for in 遍历
可以用类似属性的方法直接访问,也可以用for遍历
如果数据结构考虑周全,可以避免一部分遍历,如果效率要求很高,就考虑考虑数据如何组织吧
希望对你有所帮助
//测试全文 保存为xx.html浏览,见效果,^_^
<script language="javascript">
var BabyMap;
eval("BabyMap=" + "{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}");
alert(BabyMap["R_0"]);
alert(BabyMap.R_1);
for(x in BabyMap)alert(BabyMap[x]);
</script>
不是标准的JSON格式,这是我以前用的一种格式,后来看到JSON的介绍,类似,知道原理就好了
//{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}
//以上是服务器返回的数据
var BabyMap;
eval("BabyMap=" + "{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}");
alert(BabyMap["R_0"]);//数组方式访问
alert(BabyMap.R_1);//属性方式,不过没有用数组索引的方式灵活,适合有固定属性的对象.
for(x in BabyMap)alert(BabyMap[x]);//for in 遍历
可以用类似属性的方法直接访问,也可以用for遍历
如果数据结构考虑周全,可以避免一部分遍历,如果效率要求很高,就考虑考虑数据如何组织吧
希望对你有所帮助
//测试全文 保存为xx.html浏览,见效果,^_^
<script language="javascript">
var BabyMap;
eval("BabyMap=" + "{R_0:[0,21], R_1:[22,21],R_2:[44,21],R_3:[66,21],R_4:[88,23]}");
alert(BabyMap["R_0"]);
alert(BabyMap.R_1);
for(x in BabyMap)alert(BabyMap[x]);
</script>
#10
xml的冗余是没有办法的事情,其他表示方法,如果要表示清楚,肯定也要多不少东西
所以如果要让数据小,再小,就考虑不要用那么详细的表示了,比如xml中定义为<ClientName>的标签,改为C1
如果嫌xml解析慢,就不要用xml,或者看看你的程序,解析的多了自然慢,如果觉得有些东西你没法控制
那就自己组织数据.效率要求高了,可以暂时不考虑什么易读不易读,对人易读的东西,对机器不一定易读.
自己把握这个尺度就可以了,^_^
所以如果要让数据小,再小,就考虑不要用那么详细的表示了,比如xml中定义为<ClientName>的标签,改为C1
如果嫌xml解析慢,就不要用xml,或者看看你的程序,解析的多了自然慢,如果觉得有些东西你没法控制
那就自己组织数据.效率要求高了,可以暂时不考虑什么易读不易读,对人易读的东西,对机器不一定易读.
自己把握这个尺度就可以了,^_^
#11
lz要干嘛?