脚本专栏 
首页 > 脚本专栏 > 浏览文章

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

(编辑:jimmy 日期: 2025/2/25 浏览:3 次 )
<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>
hta实现的笨狼树状节点查看器XMLTool.hta
上一篇:VBS脚本的GUI界面 HTA简明教程(网络搜集整理)
下一篇:exe转换16进制的html保存的hta实现代码
一句话新闻
一文看懂荣耀MagicBook Pro 16
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?