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

<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>
XMLTool.hta

(0)

相关推荐

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

    <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-st

  • hta实现的笨狼XSLT练习器

    <HTML> <HEAD> <TITLE>笨狼XSLT练习器 _我们</TITLE> <style> body  {     font-size:12;     BACKGROUND: #DADADA;     margin-left:20; } #blockXML { font-family:Verdana;     font-size:12px;         overflow:scroll;     height:400;     top

  • hta作品笨狼CSDN爬虫

    <html> <head> <title>笨狼CSDN爬虫</title> <style> body {     font-size:12;     margin:20;     background-color:#eeeeee;     } div {     font-size:12;     border:1 solid navy;     margin-left:20;     } input.num { width:20;     ov

  • MySQL递归查询树状表的子节点、父节点具体实现

    简介:mysql5.0.94版本,该版本以及较高级的版本(5.5.6等等)尚未支持循环递归查询,和sqlserver.oracle相比,mysql难于在树状表中层层遍历的子节点.本程序重点参考了下面的资料,写了两个sql存储过程,子节点查询算是照搬了,父节点查询是逆思维弄的. 表结构和表数据就不公示了,查询的表user_role,主键是id,每条记录有parentid字段(对应该记录的父节点,当然,一个父节点自然会有一个以上的子节点嘛) 复制代码 代码如下: CREATE FUNCTION `g

  • MySQL实现树状所有子节点查询的方法

    本文实例讲述了MySQL实现树状所有子节点查询的方法.分享给大家供大家参考,具体如下: 在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现. 但很多时候我们无法控制树的深度.这时就需要

  • dtree 网页树状菜单及传递对象集合到js内,动态生成节点

    在winform端,树状菜单是非常有用的,实现这个是非常便捷的,所以我想到在页面放入一个树状菜单的.我选择了dtree这个工具,网络上还有很多方法实现页面树状菜单的,不过我觉得这个比较好用的,而且配置比较简单,运用上上手很快.dtree是纯js的,所以不用导入jar包,并且配置只要在js内配置就好了.而且现在网络上有很多高手修改后的改良版,加了checkbox,更加方便.在开发过程中,最难的就是数据的交互的,因为dtree是纯js的,所以不存在和后台交互的方法,我的办法是先通过后台交互,将数据传

  • 学习正则帮手笨狼正则练习器

    <HTML> <HEAD> <TITLE>笨狼正则练习器_www.jb51.net我们 </TITLE> <style> body  {     font-size:12;     BACKGROUND: #DADADA;     margin-left:20; } #blockORG { font-family:Verdana;     font-size:12px;         overflow:scroll;     height:30

  • 基于Web标准的UI组件 — 树状菜单(2)

    从这篇开始,你需要拥有一些Javascript和DOM相关的知识才能顺利地学习下去.由于Javascript和DOM都不是三言两语可以说完的东西,如果你对它们还不熟悉,请先到这里学习一下再继续:Javascript在线教程(英文).DOM在线教程(英文). getElementsByClassName() 为了从一大堆HTML代码中找出我们的树状菜单(也许有多个),我们先来实现一个通过className找DOM节点的方法:getElementsByClassName.这是对浏览器自有DOM方法的

  • C#使用Jquery zTree实现树状结构显示 异步数据加载

    C#使用Jquery zTree实现树状结构显示_异步数据加载 JQuery-Ztree下载地址:https://github.com/zTree/zTree_v3 JQuery-Ztree数结构演示页面:  http://www.treejs.cn/v3/demo.php#_101 关于zTree的详细解释请看演示页面,还有zTree帮助Demo. 下面简要讲解下本人用到的其中一个实例(直接上关键代码了): 异步加载节点数据: A-前台: <link href="zTree_v3-mas

  • jQuery实现自定义右键菜单的树状菜单效果

    本文实例讲述了jQuery实现自定义右键菜单的树状菜单效果.分享给大家供大家参考.具体如下: 这是一款基于jQuery的自定义右键菜单,在树状结构的子节点(下级没有节点)上单击右键才会弹出自定义菜单,而且菜单是自动根据鼠标位置来定位的.当鼠标在菜单以外的任意空白处单击一下后会自动消失.这里想特别说明一点所谓的"菜单以外",可以有两种解剖方式--1.除了鼠标在菜单区域内的所有位置:2.如下图所示的A.B.C.D四个区域.显然用第一种方法来剖析会更简单直接一点.源码中的!IsInArea就

随机推荐