急求将xml文件解析成动态树型目录,求源码!热心人看看那块出错了

急求将xml文件解析成动态树型目录,求源码!!!好心人看看那块出错了?
本帖最后由 yaoli521 于 2012-06-30 18:26:22 编辑
 那位大侠帮我看看,将xml文件解析成动态树型目录,求源码!!!
  那位好心人帮我看看,那出错了????
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>  
  <script type="text/javascript" language="javascript" defer="defer">
  var d=document.getElementById("TreeMenu");
  d.innerHTML=BuilderTree(rootNode);
    function CreateXMLDoc(xmlFilePath)
{
if(window.ActiveXObject) 

    //获得操作的xml文件的对象 
    var msXMLdom = new ActiveXObject('Microsoft.XMLDOM'); 
    msXMLdom.async = false; 
    msXMLdom.load(xmlFilePath); 
    return msXMLdom;
}
else
{
    var oXmlHttp = new XMLHttpRequest() ;
    oXmlHttp.open( "GET", xmlFilePath, false ) ;
    oXmlHttp.send(null) ;
    return oXmlHttp.responseXML;


}
//创建对象
var xmlDoc; 
xmlDoc=CreateXMLDoc("list.xml");
var rootNode=xmlDoc.lastChild;

//返回树形结构的HTML代码,参数node为节点名,level为当前节点相对于根节点的深度值
function BuilderTree(nodeName,level)
{
//子菜单项,缩进的像素数
var indent=10;
var temp="";
level=level==null ? 0 : level;
var nodes=nodeName.childNodes;
for(var i=0;i<nodes.length;i++)
{
    //当该节点没下级节点时
    if(nodes[i].childNodes.length<1)
    {
    //当前菜单的名称
    temp+="<div style='margin-left:"+level*indent+"px;cursor:hand;''>";
    temp+="<b>-</b> ";
    //是否打开新窗口
    var target=nodes[i].getAttribute("target")==null ? "" : "target='"+nodes[i].getAttribute("target")+"'";
    temp+="<a href='"+nodes[i].getAttribute("url")+"' "+target+">"+nodes[i].getAttribute("name")+"</a>";
    temp+="</div>";
    continue;
    }
    //当前菜单的名称
    temp+="<div style='margin-left:"+level*indent+"px;cursor:hand;' onclick='show(this)'>";
    temp+="<b>+</b> <b>"+nodes[i].getAttribute("name")+"</b>";
    temp+="</div>";
    //当前菜单的下级内容
    temp+="<div style='margin-left:"+indent+"px;cursor:hand;display:none'>";
    temp+=BuilderTree(nodes[i],level+1);
    temp+="</div>";
}
return temp;
}
//操作某个节点的下一节点nextSibling是否显示;
function show(obj)
{
//当前节点的下一节点
var nextNode=obj.nextSibling;
//当前节点的头部符号节点,就是菜单项前面+、-号
var subNode=obj.firstChild.firstChild;
if(nextNode.nodeType==1)
{
            with(eval(nextNode))
            {
             if(style.display=="")
             {
              style.display="none";
              subNode.nodeValue="+";
             }else
             {
              style.display="";
              subNode.nodeValue="-";
             }
            }
}
}
  </script>
  
  <body>
    <div id="TreeMenu"></div>
  </body>
</html>

------解决方案--------------------
参考这里:http://blog.****.net/bladmaster/article/details/741328