首页 > 编程 > HTML > 正文

hta实现的笨狼树状节点查看器

2020-01-25 19:40:22
字体:
来源:转载
供稿:网友
笨狼树状节点查看器
 
<html> 
<head> 
<style> 
table 

    border-collapse: collapse; 
    border-width: 4;  
    border-style: double;  
    border-color:#15336F; 
    font-size:12px; 

body 

    font-size:12px; 

div 

    width:100%; 
    height:9;  
    border-style:solid;  
    border-width:1;  
    border-color:#eeeeee;     
    vertical-align:top; 
    font-size:12; 
    cursor:hand; 

</style> 
<title>笨狼树状节点查看器</title> 
</head> 
<body> 
 <INPUT type="file" id=file1 name=file1>请输入xml文件路径 
 <INPUT type="button" value="确定" onclick = "vbs:analyse "> 
 <SELECT id="select1" onchange="vbs:analyse"> 
        <OPTION value="nodeName" >显示标签</OPTION> 
        <OPTION  value="text" >显示文字</OPTION> 
        <OPTION  value="attribute" >显示属性</OPTION> 

        <OPTION  value="XPath" >显示XPath</OPTION> 
</SELECT> 
<DIV id="oList" style="padding-left:0"></DIV> 

</body> 
 <script language="vbScript" > 
    '************************************** 
    '****作者:    超级大笨狼 superdullwolf**** 
    '**************************************         

        public dic,favour,anything    ,doc       

        set doc = CreateObject("Microsoft.XMLDOM")         
        doc.async=False 
    sub analyse() 
            dim myTR  
            favour = select1.value 
            removeDIV   
            if not doc.load(file1.value) then  
                alert "文件加载失败,请检查文件是否存在!"     
            else 
                Set rootNode = doc.DocumentElement 
                set rootDIV = document.createElement("DIV")     
                rootDIV.setAttribute "XPath",rootNode.nodeName  
                oList.setAttribute "XPath",rootNode.nodeName                   
                oList.setAttribute "parsed",false 
                appendDIV     oList,rootNode     

            end if 
    end sub 

    sub appendDIV(myDIV,myNode)     

        dim myChild    ,newDIV,ChildID,thisID ,ChildXPath 

         
        for each myChild in myNode.childNodes 

            if     myChild.nodeName <> "#text"    then     
                set newDIV = document.createElement("DIV")             
                myDIV.appendChild    newDIV             
                addPx newDIV, myDIV,10    '缩进10象素 

                ChildID = 0 
                ChildXPath = myDIV.getAttribute("XPath") & "/" & myChild.nodeName & "[" & ChildID & "]"     

                do while not doc.selectSingleNode(ChildXPath) is myChild 
                    ChildID=ChildID+1 
                    ChildXPath = myDIV.getAttribute("XPath") & "/" & myChild.nodeName & "[" & ChildID & "]"     
                loop 

                newDIV.setAttribute "XPath",ChildXPath  
                newDIV.setAttribute "parsed",false    '子元素还没标记过了。 

                newDIV.title = newDIV.getAttribute("XPath")  
                newDIV.innerText = getText(myChild,newDIV)  

                if myChild.childNodes.length>0 then  

                        newDIV.attachEvent "onclick",GetRef("attachOnclick") 
                end if 
            end if                      
        next 
        myDIV.setAttribute "parsed",true'所有子元素都标记过了。 
    end sub     





    sub removeDIV()              
        dim oldDIV 
        for each  oldDIV in   oList.childNodes           
               oldDIV.removeNode(true)              
         next      
    end sub 

    sub attachOnclick() 
        dim obj    ,nodeXPath,cDIV 
        set obj=window.event.srcElement  
        nodeXPath = obj.getAttribute("XPath") 
        if instr(nodeXPath,"#text") >0 then  
            window.event.cancelBubble = true 
            exit sub 
        end if 
        if not obj.getAttribute("parsed")= true then      
             appendDIV obj ,doc.selectSingleNode(nodeXPath) 
        else 
            for each cDIV in obj.children 
                if cDIV.style.display = "none" then 
                    cDIV.style.display = "" 
                else 
                    cDIV.style.display = "none" 
                end if 
            next 
        end if 
        window.event.cancelBubble = true          
    end sub 

    function getText(myNode,oDIV) 
        dim myAttribute 
        getText = "" 
        select case favour 
            case "text" 
                if not isnull(myNode.text) then 
                    getText = myNode.text 
                 else 
                    getText = "空文字" 
                 end if             
            case "nodeName"                  
                    getText = myNode.nodeName     
            case "attribute"     
                if myNode.nodeName <>"#text" then 
                    for each myAttribute in  myNode.attributes                          
                        getText =getText &  myAttribute.name 
                        getText = getText & "=" & chr(34)  
                        getText = getText & myAttribute.value  & chr(34) & " " 
                    next 
                    getText = trim(getText) 
                end if 

              
            case "XPath" 
                getText = oDIV.title 
        end select 
        if trim(getText) ="" then getText ="空" 
    end function 

    sub addPx(newDIV,oldDIV,num) 
        dim re,myString     
        set re = new RegExp 
        re.Global = true 
        re.Pattern = "[^/d]*"             
        myString =  re.Replace(oldDIV.style.paddingLeft, "") 
        if myString ="" then myString = "0" 
        myString = (cint(myString) + num ) & "px" 
        newDIV.style.paddingLeft = myString 
        set re = nothing 
    end sub 
 </script> 
</html>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表