<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
解决方案 »
- 程序设计中的画图
- maven提示:Could not read settings.xml, assuming default values
- java语言下 非泛型类 泛型方法中得到 T的类别
- axis2 服务器接收一list
- 问题相当奇怪
- 请问一下,怎么在TOMCAT里配制类似于WEBLOGIC下的启动类(用于RMI)??
- Middlegen-Hibernate问题,高手近
- 问一个JSTL的问题
- 一个关于struts中的<bean:message />的问题
- com.borland.primetime.util.AssertionException: gbk异常
- 帮我看看hibernate sql server的配置代码谢谢。
- 大侠们来看看这段代码是干什么的(在线等。。。)
不怪啊,就是节点都是<type></type>,但是不知道是几层,想个法子都遍历出来
不是,就是利用xml文件动态生成tree