<type name='0'>
<type name='1'>1</type>
<type name='2'>
<type name='21'>21</type>
<type name='22'>22</type>
</type>
<type name='3'>
<type name='31'>31</type>
<type name='32'>
<type name='321'>321</type>
<type name='322'>322</type>
</type>
</type>
<type name='4'>
<type name='41'>41</type>
<type name='42'>
<type name='421'>421</type>
<type name='422'>422</type>
<type name='423'>
<type name='4231'>4231</type>
<type name='4232'>4232</type>
</type>
</type>
</type>
</type>
我有如上XML文件,标签都是type,也不知道每一层有多深,现在就是想把它都全部递归出来,然后按照此格式生成动态树,生成树我用的是dtree。
现在的问题是:
if(xmlDoc == null){
xmlDoc = loadXML('MyXml.xml');
var type = xmlDoc.documentElement; //根节点
var title = type.getAttribute("name");
tree = new dTree('tree'); //树形菜单
tree.add(0,-1,title); //树形菜单的顶级
if(type.hasChildNodes()){ //根节点下的节点
var types = type.childNodes;
alert(types.length); //有4个节点
for(var i=0;i<types.length;i++){
var type2= types[i];
tree.add(i+1,0,type2.getAttribute("name"),''); //就在顶级菜单下面加上四个子菜单
if(types2.hasChildNodes()){ //在判断第二节点下的节点,
var type2s = types2.childNodes;
for(var j=0;j<type2s.length;j++){ //这边循环就有问题了,老报 Stack Overflow错误
var type3 = type2s[j];
tree.add(j+1,i+1,'sds','');
}
}
}
}上面不知道有几层,所以不能一直用for循环,能不能有更好额递归方法,而不会出现Stack Overflow
<type name='1'>1</type>
<type name='2'>
<type name='21'>21</type>
<type name='22'>22</type>
</type>
<type name='3'>
<type name='31'>31</type>
<type name='32'>
<type name='321'>321</type>
<type name='322'>322</type>
</type>
</type>
<type name='4'>
<type name='41'>41</type>
<type name='42'>
<type name='421'>421</type>
<type name='422'>422</type>
<type name='423'>
<type name='4231'>4231</type>
<type name='4232'>4232</type>
</type>
</type>
</type>
</type>
我有如上XML文件,标签都是type,也不知道每一层有多深,现在就是想把它都全部递归出来,然后按照此格式生成动态树,生成树我用的是dtree。
现在的问题是:
if(xmlDoc == null){
xmlDoc = loadXML('MyXml.xml');
var type = xmlDoc.documentElement; //根节点
var title = type.getAttribute("name");
tree = new dTree('tree'); //树形菜单
tree.add(0,-1,title); //树形菜单的顶级
if(type.hasChildNodes()){ //根节点下的节点
var types = type.childNodes;
alert(types.length); //有4个节点
for(var i=0;i<types.length;i++){
var type2= types[i];
tree.add(i+1,0,type2.getAttribute("name"),''); //就在顶级菜单下面加上四个子菜单
if(types2.hasChildNodes()){ //在判断第二节点下的节点,
var type2s = types2.childNodes;
for(var j=0;j<type2s.length;j++){ //这边循环就有问题了,老报 Stack Overflow错误
var type3 = type2s[j];
tree.add(j+1,i+1,'sds','');
}
}
}
}上面不知道有几层,所以不能一直用for循环,能不能有更好额递归方法,而不会出现Stack Overflow
解决方案 »
- SSH框架中如何保留bean
- hibernater处理复杂sql
- spring security 配置
- 关于hibernate的关联映射的问题
- 关于Struts配置的问题(出现Servlet action is not available错误)
- 在j2ee中怎么让服务器主动给客户发消息
- Hibernate & tomcat5X & mysql 配置中的错误提示
- 【★】JBuilderX中,如何把现有的TOMCAT下的一个web目录导入进来生成一个web工程【★】
- 求助web service client错误原因
- The target server failed to respond
- 帮我看看hibernate sql server的配置代码谢谢。
- 大侠们来看看这段代码是干什么的(在线等。。。)
不怪啊,就是节点都是<type></type>,但是不知道是几层,想个法子都遍历出来
不是,就是利用xml文件动态生成tree