新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论DOM, SAX, XPath等。
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 DOM/SAX/XPath 』 → 帮帮忙吧,头都大了,拜托了 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 3232 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 帮帮忙吧,头都大了,拜托了 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     lazyy 美女呀,离线,快来找我吧!
      
      
      等级:大二期末(数据结构考了98分!)
      文章:61
      积分:330
      门派:XML.ORG.CN
      注册:2005/5/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lazyy发送一个短消息 把lazyy加入好友 查看lazyy的个人资料 搜索lazyy在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lazyy的博客楼主
    发贴心情 帮帮忙吧,头都大了,拜托了

    <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有什么作用?使用方法有谁知道告诉一下
    谢谢了


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/9/14 16:11:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 DOM/SAX/XPath 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客2
    发贴心情 
    你的loadxml()有误:
    var a = new ActiveXObject("Msxml2.DOMDocument")
    a.async=false
    a.load("eg2.xml")

    以上是JS调用MSXML的方法。

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/9/14 17:27:00
     
     lazyy 美女呀,离线,快来找我吧!
      
      
      等级:大二期末(数据结构考了98分!)
      文章:61
      积分:330
      门派:XML.ORG.CN
      注册:2005/5/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给lazyy发送一个短消息 把lazyy加入好友 查看lazyy的个人资料 搜索lazyy在『 DOM/SAX/XPath 』的所有贴子 引用回复这个贴子 回复这个贴子 查看lazyy的博客3
    发贴心情 
    load()中的参数可以是变量吗?Qr:具体怎么修改能明确一下吗?仍然提示我没有对象。谢谢了
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/9/16 14:32:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 DOM/SAX/XPath 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客4
    发贴心情 
    可以的
    var str="eg2.xml";
    a.load(str)
    注意:"\"在JS中是特殊字符,得用转义,即“\\”.

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/9/16 15:01:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 DOM/SAX/XPath 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/9/13 12:59:59

    本主题贴数4,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms