Dom遍历XML的一个例子,结果为树状结构

2018-09-06 12:07

阅读:368

  knowledge.XML文件
复制代码 代码如下:<?xmlversion=1.0encoding=gb2312?>
<?xml:stylesheettype=text/xslhref=knowledge.xsl?>
<Ebaihename=Ebaihetype=gsid=gs000>
<知识管理name=知识管理type=rtid=rt000>
<目录name=vc++type=mlid=ml003/>
<目录name=asptype=mlid=ml001>
<知识name=什么是ASP1type=zsid=zs001>
<title>什么是ASP</title>
<author>cxx</author>
<adddate>2001-02-20</adddate>
<content>ASP:ActiveServerPage</content>
</知识>
<知识name=什么是ASP2type=zsid=zs002>
<title>什么是ASP</title>
<author>cxx</author>
<adddate>2001-02-20</adddate>
<content>ASP:ActiveServerPage</content>
</知识>
</目录>
<目录name=vbstype=mlid=ml002>
<知识name=什么是vbs1type=zsid=zs003>
<title>什么是ASP</title>
<author>cxx</author>
<adddate>2001-02-20</adddate>
<content>ASP:ActiveServerPage</content>
</知识>
<知识name=什么是vbs2type=zsid=zs004>
<title>什么是ASP</title>
<author>cxx</author>
<adddate>2001-02-20</adddate>
<content>ASP:ActiveServerPage</content>
</知识>
</目录>
</知识管理>
<留言簿name=留言簿type=lyid=ly000>
<单元name=你好type=dyid=dy001>
<留言name=Whoareyoutype=zsid=zs005>
<title>什么是ASP</title>
<author>cxx</author>
<adddate>2001-02-20</adddate>
<content>ASP:ActiveServerPage</content>
</留言>
<留言name=你好type=zsid=zs006>
<title>什么是ASP</title>
<author>cxx</author>
<adddate>2001-02-20</adddate>
<content>ASP:ActiveServerPage</content>
</留言>
</单元>
<单元name=我的留言type=dyid=dy003/>
</留言簿>
<留言簿name=留言簿type=lyid=ly001/>
</Ebaihe>
bianli.asp文件

复制代码 代码如下:<%@LANGUAGE=VBScript%>
<%
functiongetimgstr(ttid,ttname,ttlvl,tttype,ttlf,ttlstr)
dimttstr1
ifttlvl=0then
ttstr1=ttstr1&<ahref=&chr(34)&chr(34)
ttstr1=ttstr1&onclick=&chr(34)&callOnClickDiv(&ttid&,&2&)
ttstr1=ttstr1&chr(34)&>
ttstr1=ttstr1&<imgborder=&chr(34)&0&chr(34)&src=&chr(34)
ttstr1=ttstr1&image/Computer.gif&chr(34)&height=16>&</a>
ttstr1=ttstr1&<ahref=&chr(34)&chr(34)
ttstr1=ttstr1&onclick=&chr(34)&callOnClickDiv(&ttid&,&2&)
ttstr1=ttstr1&chr(34)&>
ttstr1=ttstr1&ttname&</a><br>&vbcrlf
ttstr1=ttstr1&<divid=&chr(34)&ttid&chr(34)&style=display:none>&vbcrlf
else
fori=2tolen(ttlstr)-1
ifmid(ttlstr,i,1)=1then
ttstr1=ttstr1&<imgborder=&chr(34)&0&chr(34)&src=&chr(34)
ttstr1=ttstr1&image/I-line.gif&chr(34)&height=16>
endif
ifmid(ttlstr,i,1)=0then
ttstr1=ttstr1&<imgborder=&chr(34)&0&chr(34)&src=&chr(34)
ttstr1=ttstr1&image/none.gif&chr(34)&height=16>
endif
next
iftttype=1then
ttstr1=ttstr1&<ahref=&chr(34)&chr(34)
ttstr1=ttstr1&onclick=&chr(34)&callOnClickDiv(&ttid&,&ttlf&)
ttstr1=ttstr1&chr(34)&>
ttstr1=ttstr1&<imgborder=&chr(34)&0&chr(34)&src=&chr(34)
ifttlf=0then
ttstr1=ttstr1&image/T-plus.gif&chr(34)&id=&chr(34)&l-&ttid&chr(34)&
height=16></a>
else
ttstr1=ttstr1&image/l-plus.gif&chr(34)&id=&chr(34)&l-&ttid&chr(34)&
height=16></a>
endif
ttstr1=ttstr1&<ahref=&chr(34)&chr(34)
ttstr1=ttstr1&onclick=&chr(34)&callOnClickDiv(&ttid&,&ttlf&)
ttstr1=ttstr1&chr(34)&>
ttstr1=ttstr1&<imgborder=&chr(34)&0&chr(34)&src=&chr(34)
ttstr1=ttstr1&image/c-fold.bmp&chr(34)&id=&chr(34)&p-&ttid&chr(34)&
height=16></a>
ttstr1=ttstr1&<ahref=&chr(34)&chr(34)
ttstr1=ttstr1&onclick=&chr(34)&callOnClickDiv(&ttid&,&ttlf&)
ttstr1=ttstr1&chr(34)&>
ttstr1=ttstr1&ttname&</a><br>&vbcrlf
ttstr1=ttstr1&<divid=&chr(34)&ttid&chr(34)&style=display:none>&vbcrlf
else
ttstr1=ttstr1&<imgborder=&chr(34)&0&chr(34)&src=&chr(34)
ifttlf=0then
ttstr1=ttstr1&image/t-line.gif&chr(34)&height=16>
else
ttstr1=ttstr1&image/l-line.gif&chr(34)&height=16>
endif
ttstr1=ttstr1&<ahref=&chr(34)&chr(34)
ttstr1=ttstr1&onclick=&chr(34)&callOnClickDiv(&ttid&,3)
ttstr1=ttstr1&chr(34)&>
ttstr1=ttstr1&<imgborder=&chr(34)&0&chr(34)&src=&chr(34)
ttstr1=ttstr1&image/leaf.bmp&chr(34)&id=&chr(34)&p-&ttid&chr(34)&
height=16></a>
ttstr1=ttstr1&<ahref=&chr(34)&chr(34)
ttstr1=ttstr1&onclick=&chr(34)&callOnClickDiv(&ttid&,3)
ttstr1=ttstr1&chr(34)&>
ttstr1=ttstr1&ttname&</a><br>&vbcrlf
ttstr1=ttstr1&<divid=&chr(34)&ttid&chr(34)&style=display:none></div>&vbcrlf
endif
endif
getimgstr=ttstr1
endfunction
FunctionShowNode(node,mylvl,myleaf,mylstr)
dimttstr
dimmystr
dimttleaf
dimttn
ttn=0
ifmyleaf=0then
ttleaf=0
else
ttleaf=1
endif
ForEachchildInnode.childNodes
ttn=ttn+1
If(child.nodeType=1)Then
nod_name=child.Attributes.getnamedItem(name).Text
nod_type=child.Attributes.getnamedItem(type).Text
nod_id=child.Attributes.getnamedItem(id).Text
ifnod_type<>zsthen
If(child.hasChildNodes)Then
ifttn=node.childnodes.lengththen
mystr=mystr&getimgstr(nod_id,nod_name,mylvl,1,1,mylstr&0)
ttstr=ShowNode(child,mylvl+1,1,mylstr&0)
else
mystr=mystr&getimgstr(nod_id,nod_name,mylvl,1,0,mylstr&1)
ttstr=ShowNode(child,mylvl+1,0,mylstr&1)
endif
mystr=mystr&ttstr
mystr=mystr&</div>
else
ifttn=node.childnodes.lengththen
mystr=mystr&getimgstr(nod_id,nod_name,mylvl,0,1,mylstr&0)
else
mystr=mystr&getimgstr(nod_id,nod_name,mylvl,0,0,mylstr&1)
endif
EndIf
else
ifttn=node.childnodes.lengththen
mystr=mystr&getimgstr(nod_id,nod_name,mylvl,0,1,mylstr&0)
else
mystr=mystr&getimgstr(nod_id,nod_name,mylvl,0,0,mylstr&1)
endif
endif
endif
Next
ShowNode=mystr
EndFunction
dimxmldoc
dimxmlstr
Setxmldoc=Server.CreateObject(Microsoft.XMLDOM)
xmldoc.async=false
xmldoc.load(Server.MapPath(knowledge.xml))
xmlstr=ShowNode(xmldoc,0,0,)
setxmldoc=nothing
parent.results.display(source.transformNode(style));
%>
<html>

<head>
</head>

<body>
<scriptlanguage=VBScript>

dimolditem

subOnClickDiv(DivId,pType)
if(document.all(DivId).style.display=none)then
document.all(DivId).style.display=
if(pType=0)then
document.all(l-+DivId).src=image/t-minus.gif
document.all(p-+DivId).src=image/o-fold.bmp
endif
if(pType=1)then
document.all(l-+DivId).src=image/l-minus.gif
document.all(p-+DivId).src=image/o-fold.bmp
endif
if(pType=3)then
document.all(p-+DivId).src=image/o-fold.bmp
endif
else
document.all(DivId).style.display=none
if(pType=0)then
document.all(l-+DivId).src=image/t-plus.gif
document.all(p-+DivId).src=image/c-fold.bmp
endif
if(pType=1)then
document.all(l-+DivId).src=image/l-plus.gif
document.all(p-+DivId).src=image/c-fold.bmp
endif
if(pType=3)then
document.all(p-+DivId).src=image/c-fold.bmp
endif
endif
endsub
</script>
<fontname=宋体size=2>
<nobr><%=xmlstr%></nobr></font>
</body>


评论


亲,登录后才可以留言!