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

knowledge.XML文件

  

复制代码 代码如下:
<?xml version="1.0" encoding="gb2312"?>

  <?xml:stylesheet type="text/xsl" href="knowledge.xsl"?>

  <Ebaihe name="Ebaihe" type="gs" id="gs000">

  <知识管理 name="知识管理" type="rt" id="rt000">

  <目录 name="vc++" type="ml" id="ml003"/>

  <目录 name="asp" type="ml" id="ml001">

  <知识 name="什么是ASP 1" type="zs" id="zs001">

  <title>什么是ASP</title>

  <author>cxx</author>

  <adddate>2001-02-20</adddate>

  <content>ASP:Active Server Page</content>

  </知识>

  <知识 name="什么是ASP 2" type="zs" id="zs002">

  <title>什么是ASP</title>

  <author>cxx</author>

  <adddate>2001-02-20</adddate>

  <content>ASP:Active Server Page</content>

  </知识>

  </目录>

  <目录 name="vbs" type="ml" id="ml002">

  <知识 name="什么是vbs 1" type="zs" id="zs003">

  <title>什么是ASP</title>

  <author>cxx</author>

  <adddate>2001-02-20</adddate>

  <content>ASP:Active Server Page</content>

  </知识>

  <知识 name="什么是vbs 2" type="zs" id="zs004">

  <title>什么是ASP</title>

  <author>cxx</author>

  <adddate>2001-02-20</adddate>

  <content>ASP:Active Server Page</content>

  </知识>

  </目录>

  </知识管理>

  <留言簿 name="留言簿" type="ly" id="ly000">

  <单元 name="你好" type="dy" id="dy001">

  <留言 name="Who are you" type="zs" id="zs005">

  <title>什么是ASP</title>

  <author>cxx</author>

  <adddate>2001-02-20</adddate>

  <content>ASP:Active Server Page</content>

  </留言>

  <留言 name="你好" type="zs" id="zs006">

  <title>什么是ASP</title>

  <author>cxx</author>

  <adddate>2001-02-20</adddate>

  <content>ASP:Active Server Page</content>

  </留言>

  </单元>

  <单元 name="我的留言" type="dy" id="dy003"/>

  </留言簿>

  <留言簿 name="留言簿" type="ly" id="ly001"/>

  </Ebaihe> 

  bianli.asp文件

  

  

复制代码 代码如下:
<% @LANGUAGE=VBScript%>

  <%

  function getimgstr(ttid,ttname,ttlvl,tttype,ttlf,ttlstr)

  dim ttstr1

  if ttlvl=0 then

  ttstr1=ttstr1 & "<a href=" & chr(34) & "#" & chr(34)

  ttstr1=ttstr1 & " onclick=" & chr(34) & "call OnClickDiv('" & ttid & "','" & "2" & "')"

  ttstr1=ttstr1 & chr(34) & ">"

  ttstr1= ttstr1 & "<img border=" & chr(34) & "0" & chr(34) & " src=" & chr(34)

  ttstr1= ttstr1 & "image/Computer.gif" & chr(34) & " height=16>" & "</a>"

  ttstr1=ttstr1 & "<a href=" & chr(34) & "#" & chr(34)

  ttstr1=ttstr1 & " onclick=" & chr(34) & "call OnClickDiv('" & ttid & "','" & "2" & "')"

  ttstr1=ttstr1 & chr(34) & ">"

  ttstr1=ttstr1 & ttname & "</a><br>" & vbcrlf

  ttstr1=ttstr1 & "<div id=" & chr(34) & ttid & chr(34) & " style=display:none>" & vbcrlf

  else

  for i= 2 to len(ttlstr)-1

  if mid(ttlstr,i,1)="1" then

  ttstr1 = ttstr1 & "<img border=" & chr(34) & "0" & chr(34) & " src=" & chr(34)

  ttstr1 = ttstr1 & "image/I-line.gif" & chr(34) & " height=16>"

  end if

  if mid(ttlstr,i,1)="0" then

  ttstr1 = ttstr1 & "<img border=" & chr(34) & "0" & chr(34) & " src=" & chr(34)

  ttstr1 = ttstr1 & "image/none.gif" & chr(34) & " height=16>"

  end if

  next

  if tttype=1 then

  ttstr1= ttstr1 & "<a href=" & chr(34) & "#" & chr(34)

  ttstr1=ttstr1 & " onclick=" & chr(34) & "call OnClickDiv('" & ttid & "','" & ttlf & "')"

  ttstr1=ttstr1 & chr(34) & ">"

  ttstr1=ttstr1 & "<img border=" & chr(34) & "0" & chr(34) & " src=" & chr(34)

  if ttlf=0 then

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

  end if

  ttstr1= ttstr1 & "<a href=" & chr(34) & "#" & chr(34)

  ttstr1=ttstr1 & " onclick=" & chr(34) & "call OnClickDiv('" & ttid & "','" & ttlf & "')"

  ttstr1=ttstr1 & chr(34) & ">"

  ttstr1=ttstr1 & "<img border=" & 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 & "<a href=" & chr(34) & "#" & chr(34)

  ttstr1=ttstr1 & " onclick=" &chr(34) & "call OnClickDiv('" & ttid & "','" & ttlf & "')"

  ttstr1=ttstr1 & chr(34) & ">"

  ttstr1=ttstr1 & ttname & "</a><br>" & vbcrlf

  ttstr1=ttstr1 & "<div id=" & chr(34) & ttid & chr(34) & " style=display:none>" & vbcrlf

  else

  ttstr1 = ttstr1 & "<img border=" & chr(34) & "0" & chr(34) & " src=" & chr(34)

  if ttlf=0 then

  ttstr1 = ttstr1 & "image/t-line.gif" & chr(34) & " height=16>"

  else

  ttstr1 = ttstr1 & "image/l-line.gif" & chr(34) & " height=16>"

  end if

  ttstr1= ttstr1 & "<a href=" & chr(34) & "#" & chr(34)

  ttstr1=ttstr1 & " onclick=" & chr(34) & "call OnClickDiv('" & ttid & "','3')"

  ttstr1=ttstr1 & chr(34) & ">"

  ttstr1=ttstr1 & "<img border=" & 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 & "<a href=" & chr(34) & "#" & chr(34)

  ttstr1=ttstr1 & " onclick=" & chr(34) & "call OnClickDiv('" & ttid & "','3')"

  ttstr1=ttstr1 & chr(34) & ">"

  ttstr1=ttstr1 & ttname & "</a><br>" & vbcrlf

  ttstr1=ttstr1 & "<div id=" & chr(34) & ttid & chr(34) & " style=display:none></div>" & vbcrlf

  end if

  end if

  getimgstr=ttstr1

  end function

  Function ShowNode(node,mylvl,myleaf,mylstr)

  dim ttstr

  dim mystr

  dim ttleaf

  dim ttn

  ttn=0

  if myleaf=0 then

  ttleaf=0

  else

  ttleaf=1

  end if

  For Each child In node.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

  if nod_type<>"zs" then

  If (child.hasChildNodes) Then

  if ttn=node.childnodes.length then

  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")

  end if

  mystr=mystr & ttstr

  mystr=mystr & "</div>"

  else

  if ttn=node.childnodes.length then

  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")

  end if

  End If

  else

  if ttn=node.childnodes.length then

  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")

  end if

  end if

  end if

  Next

  ShowNode=mystr

  End Function

  dim xmldoc

  dim xmlstr

  Set xmldoc = Server.CreateObject("Microsoft.XMLDOM")

  xmldoc.async=false

  xmldoc.load(Server.MapPath("knowledge.xml"))

  xmlstr=ShowNode(xmldoc,0,0,"")

  '  set xmldoc=nothing

  'parent.results.display(source.transformNode(style));

  %>

  <html>

  <head>

  </head>

  <body>

  <script language="VBScript">

  dim olditem

  sub OnClickDiv(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"

  end if

  if (pType="1") then

  document.all("l-"+DivId).src="image/l-minus.gif"

  document.all("p-"+DivId).src="image/o-fold.bmp"

  end if

  'if (pType="3") then

  '  document.all("p-"+DivId).src="image/o-fold.bmp"

  'end if

  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"

  end if

  if (pType="1") then

  document.all("l-"+DivId).src="image/l-plus.gif"

  document.all("p-"+DivId).src="image/c-fold.bmp"

  end if

  'if (pType="3") then

  '  document.all("p-"+DivId).src="image/c-fold.bmp"

  'end if

  end if

  end sub

  </script>

  <font name="宋体" size="2">

  <nobr><%=xmlstr%></nobr></font>

  </body>