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

时间:2022-03-03 01:37:01

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>