现在的位置: 首页 > 综合 > 正文

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

2012年10月10日 ⁄ 综合 ⁄ 共 3235字 ⁄ 字号 评论关闭

<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

抱歉!评论已关闭.