以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  帮帮忙吧,头都大了,拜托了  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=22215)


--  作者:lazyy
--  发布时间:9/14/2005 4:11:00 PM

--  帮帮忙吧,头都大了,拜托了
<html>
   <head>
      <title>树形结构浏览器</title>
  
  
   <xml  id=xmldoc>  </xml>
   <script  language="javascript">
   //
   //*变量声明
   //固定变量
   
  
   
   //可变变量
   function windowload()
       {
        xmlfile.focus()
     }

   function  loadenter()
   {
   if  (event.keycode==13)
   
   loadbutton.click();
   }
   
   
   
   //*树形装载和显示函数
   
   
   

  function   loadxml()
   
   {
   if  (document.form1.xmlfile.value=="")
   
   {
     alert("an  xml  file  must  be  specified  for loading  to  occur.")
   }
   
   
     else {
    xmldoc.async=false
    xmldoc.load(xmlfile.value);
   if(xmldoc.parseerror.errorcode!=0)
   {
   alert(errtxt)
   windowload()
   }
   if(xmldoc.documentelement!=null)
   {
   displaytree();[/B]   }
   }
   }
   //文本累加用于保存HTML代码
   
   
   function  addhtml(text)
   {
   
   strstruct+=text;
   
   }
   
   //显示XML树
   
   function  displaytree()
   {
   
   if(xmldoc==null)
   {
   alert("no  xml file  has  been  loaded.")
   }
   else
   {
   selectednodes=new  array();
   selectednodestyoe=new  array()
   selectednodeslength=0
   strstruct=""
   elementnum=0
   code=new  array()
   buildtree(xmldoc.documentelement,0,0)
   displaydiv.innerhtml=strstruct
   }[/color]   }
   //构建xml树
   //level指示树的深度
   //last指示该元素节点是否是本段的最后一个节点
   //1表示真,0表示假,假如为真的话使用图片corner.gif
   
   function  buildtree(node,level,last)
   {
   if (level!=0)
   {
   //code[j]用于指明该节点是否是该节的最后一个节点,是的话前面将加上空白,否则的话将会加上|
   
   for(var j=0; j<(level-1);j++)
   
   {
   if (code[j]==0)
   addhtml("<img  src="vertical.gif"  align="absbottom">&nbsp;&nbsp;&nbsp;");
   else
    
    addhtml("<img  src="blank.gif"  align="absbottom">&nbsp;&nbsp;&nbsp;");
    }
   //加入正确的corner图片
   if(last==1)
   addhtml("<img  src="corner.gif"  align="absbottom">&nbsp;)
   
   else
   addhtml("<img  src="corner_contiue.gif"  allign="absbottom">&nbsp;")
}
//处理三类节点,即文本注解和其他的节点

if(node.nodetyoe==text_node)
addhtml("<font  color=""+textcolor+">"+node.text+"</font>");
else  if(node.nodetype==comment_node)
addhtml("<font  color=""+commentcolor+">"+node.text+"</font>")   
    else
    {
    var  elementid="treeviewer_"+elementnum;
    addhtml("span  id=""+elementid+">"+node.nodename+"</span>");
    elementnum++;
    
    var  tvnode=xmldoc.createnode("attribute",attid,treeviewns);
    tvnode.text=elementid;
    node.attributes.setnameditem(tvnode);
    //处理节点的属性
    
    var  attnum=node.attributes.length
    if  (attnum>0)
    {for  (var i=0;i<attnum;i++)
    {
    //不指明原有的名域
    if(node.attributes.item(i).namespace!=null)
    {
    if(node.attributes.item(i).namespace!=treeviewns)
    
    addhtml("<b>;</b><span  id=""+elementid+"_att_"+i+"\"  style="color:green">"+node.attributes.item(i).nodename+"</span>"):
    }
    else//指明属性
    
    addhtml("<b>;</b><span  id=""+elementid+"_att_"+i+""  style="color:green">"+node.attributes.item(i).nodename+"</span>");
    }
    }
    }
    }
    
    
    addhtml("<br>");
    //假如有子节点的话,递归调用buildtree()
    
    var  children=node.childnodes.length
    if (children!=0)
    {
    for(var i=0;i<children;i++)
    {
    if(i==(children-1))
    {
    
    //到达最后一个节点
    code[level]=1;
    buildtree(node.childnodes.item(i),(level+1),1);
    }
    else
    {
    //不是最后一个节点
    
    code[level]=0;
    buildtree(node.childnodes.item(i),(level+1),0);
    }
    }
    }
    }
    </script>
  </head>
     <body>
   <h2>XML文件树形结构浏览器</h2>
   <hr/>
   <b>写入XML文件的位置和名称:</b>
   <form name="form1" >
   <input  name="xmlfile"  type="text"   size="30"  value="431.1.xml" >
  <br/>
  <br/>
  <input  name="loadbutton"   type="button"  onclick="loadxml()"   value="装载XML文件并显示它的树形结构">
  </form>
  <hr/>
  <div  id="displaydiv"></div>
   </body>
      
   
</html>


该程序的目的是要加载XML文档并显示他的树形结构,可是
1.
在  <input  name="loadbutton"   type="button"  onclick="loadxml()"   value="装载XML文件并显示它的树形结构">中,的点击事件时却提示我找不到对象.loadxml事件不起作用,用的脚本是javascript,
2.innerhtml有什么作用?使用方法有谁知道告诉一下
谢谢了


--  作者:Qr
--  发布时间:9/14/2005 5:27:00 PM

--  
你的loadxml()有误:
var a = new ActiveXObject("Msxml2.DOMDocument")
a.async=false
a.load("eg2.xml")

以上是JS调用MSXML的方法。


--  作者:lazyy
--  发布时间:9/16/2005 2:32:00 PM

--  
load()中的参数可以是变量吗?Qr:具体怎么修改能明确一下吗?仍然提示我没有对象。谢谢了
--  作者:Qr
--  发布时间:9/16/2005 3:01:00 PM

--  
可以的
var str="eg2.xml";
a.load(str)
注意:"\"在JS中是特殊字符,得用转义,即“\\”.
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
375.000ms