Dom遍历XML的一个例子,结果为树状结构
发布时间:2006-10-14 2:46:42   收集提供:gaoqian
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>


 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50