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

随心笔谈2年前发布 admin
196 0 0

文章摘要

该脚本是一个自定义的XMLDOM工具,主要用于解析和编辑XML文档。其主要功能包括: 1. **显示节点信息**:通过`analyse()`函数,用户可以查看XML文档的结构,并动态地显示节点的标签、文字、属性和XPath值。 2. **节点操作**:脚本提供了`appendDIV()`、`removeDIV()`和`attachOnclick()`等函数,用于添加、删除和编辑DOM节点,用户可以通过这些函数进一步管理和编辑XML内容。 3. **关键词处理**:脚本支持提取和显示关键词(如标签、文字、属性等),并结合XPath进行定位和操作。 该脚本适用于需要自定义XML数据管理、节点操作和内容展示的应用场景,能够帮助用户快速浏览、编辑和分析XML文档。

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;

}

笨狼树状节点查看器

 请输入xml文件路径

        显示标签

        显示文字

        显示属性

        显示XPath

    ‘**************************************

    ‘****作者:    超级大笨狼 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

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

© 版权声明

相关文章