hta實現(xiàn)的笨狼樹狀節(jié)點查看器

字號:


    <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>笨狼樹狀節(jié)點查看器</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>