用ASP+XML编写留言本程序
<p><strong>建立存储留言信息的XML文件(List.xml) </strong></p>
<p>我们这里不打算使用DTD,因为我们这是我们自已编制并测试通过的XML数据,所以不需要DTD来验证(如果你对此感兴趣当然可以加一个这不影响程序的运行)。现在我们来看看建立一个留言本的基本要素 <br /> <br />0、留言ID号--定义为<id> <br /> <br />1、用户名我们--定义为<username> <br /> <br />2、来自那里们--定义为<fromwhere> <br /> <br />3、留言时间定--义为<Posttime> <br /> <br />4、用户主页定--义为<homepage> <br /> <br />5、用户的信箱--定义为<email> <br /> <br />6、留言内容定--义为<text> <br /> <br />当然以上不是必须的读者可以自行命名并加减相关标签,把它们组合起来就得到List.xml的文件了 <br /> <br /><?xml version="1.0" encoding="gb2312"?> <br /> <site> <br /> <NewList> <br /> <list> <br /> <id>1</id> <br /> <username>苛子</username> <br /> <fromwhere>中国广州</fromwhere> <br /> <Posttime>01-4-23 18:26:56</Posttime> <br /> <homepage><a href="http://page2000.xiloo.com">http://page2000.xiloo.com</a></homepage> <br /> <email><a href="mailto:lucaihui@cmmail.com">lucaihui@cmmail.com</a></email> <br /> <text>这是我的第一个XML文件</text> <br /> </list> <br /> </NewList> <br /> </site> </p>
<p><br /><strong>建立显示XML数据的ASP文件(index.asp)</strong> <br /> <br />这个文件要实现的功能就是读取并显示XML数据,首先创建一个XML对像然后把XML读入内存中,利用DOM分离出我们所要的数据。 </p>
<p>以下为引用的内容:<br /><% <br /> strSourceFile = Server.MapPath("/") & "\List.xml" <br /> '获取XML文件的路径这里根据你的虚拟目录不同而不同 <br /> Set objXML = Server.CreateObject("Microsoft.FreeThreadedXMLDOM") <br /> '以自由线程创建一个XML对像 <br /> objXML.load(strSourceFile)'把XML文件读入内存 <br /> Set objRootsite = objXML.documentElement.selectSingleNode("NewList") <br /> '选取NewList节点 <br /> %> <br /> <html> <br /> <head> <br /> <title>留言本</title> <br /> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <br /> <style type="text/css"> <br /> <!-- <br /> td { font-family: "宋体"; font-size: 9pt; text-decoration: none} <br /> a { font-family: "宋体"; font-size: 9pt; color: #0066CC; text-decoration: none} <br /> a:hover { color: #FF6600; text-decoration: underline} <br /> --> <br /> </style> <br /> </head><body bgcolor="#0099CC" text="#000000"> <br /> <table width="80%" border="0" cellspacing="1" cellpadding="4" align="center" bgcolor="#CCCCCC"> <br /> <tr bgcolor="#000000"> <br /> <td colspan="2"><font color="#FFFFFF">留言溥 <a href="PostNew.asp"><font color=#FFFFFF>写新留言</font></a></font></td> <br /> </tr> <br /> <% <br /> PageSize =10'假设每页显示10条留言 <br /> AllNodesNum =objRootsite.childNodes.length-1 <br /> '获取子节点数据(因为是从节点数从0开始的所最大子节点数要减1) <br /> PageNum=AllNodesNum\PageSize+1'算出总页数 <br /> PageNo=request.querystring("PageNo") <br /> if PageNo="" then'如果是每一次获得页面则定位到每一页显示最新的留言 <br /> PageNo=PageNum <br /> end if <br /> StarNodes=PageNo*PageSize-1'获得起始节点 <br /> EndNodes=(PageNo-1)*PageSize'获得结束节点 <br /> if EndNodes<0 then <br /> EndNodes=0 <br /> end if <br /> if StarNodes>AllNodesNum then'判断起始节点数是否超过总的节点数 <br /> EndNodes=EndNodes-(StarNodes-AllNodesNum) <br /> '如果超过则结束节点要减去(StarNodes-AllNodesNum)的差值否则下标会超界出错 <br /> StarNodes=AllNodesNum <br /> end if <br /> if EndNodes<0 then <br /> EndNodes=0 <br /> end if <br /> while StarNodes>=EndNodes <br /> '从结束节点到超始节点之间读取节点数据 <br /> username = objRootsite.childNodes.item(StarNodes).childNodes.item(1).text <br /> '获得用户名 <br /> fromwhere = objRootsite.childNodes.item(StarNodes).childNodes.item(2).text <br /> '获得用户来自那里 <br /> Posttime = objRootsite.childNodes.item(StarNodes).childNodes.item(3).text <br /> '获得留言时间 <br /> homepage = objRootsite.childNodes.item(StarNodes).childNodes.item(4).text <br /> '获得用户主页 <br /> email = objRootsite.childNodes.item(StarNodes).childNodes.item(5).text <br /> '获得用户Eamil <br /> text = objRootsite.childNodes.item(StarNodes).childNodes.item(6).text <br /> '获昨留言内容 <br /> <br /> '***************************************************************************** <br /> '这里使作了XML的DOM来读取数据,显然objRootsite对像所对应的节点为<NewList> <br /> ' objRootsite.childNodes.item(StarNodes)所对应的节点就是<list>节点因为不至一个<list>节点所以用了item()来识别当前节点数据,随着StarNodes的递减<list>节点根着往上移一个个读取<list>节点数据。 <br /> 'objRootsite.childNodes.item(StarNodes).childNodes.item(1).text所对应的节点为具体的每个节点的文本值,这里(1)所对应的就是username用户名(因为<list>节点的子节点才是我们真正所要的) <br /> '****************************************************************************** <br /> <br /> text = replace(text,chr(13),"<br>") <br /> '替代回车 <br /> text = replace(text,chr(32)," ") <br /> '替代空格 <br /> %> <br /> <tr bgcolor="#F0F0F0"> <br /> <td width="21%" height="94" valign="top">姓 名:<%=username%><br> <br /> 来 自:<%=fromwhere%><br> <br /> </td> <br /> <td width="79%" height="94" valign="top"> | <a href="<%=homepage%>" target=_blank title="<%=username%>的主页">主页</a> <br /> | | <a href="mailto:<%=email%>" title="给<%=username%>写信">信箱</a> | |<font color="#CC6633"> <br /> 留言时间:<%=Posttime%> </font>| <br /> <hr> <br /> <%=text%> </td> <br /> </tr> <br /> <tr bgcolor="#FFFFFF" align="right"> <br /> <td colspan="2"> </td> <br /> </tr> <br /> <% <br /> StarNodes=StarNodes-1 <br /> wend <br /> set objXML=nothing <br /> %> <br /> <tr bgcolor="#FFFFFF" align="right"> <br /> <td colspan="2"> 共有<<%=PageNum%>>页 <br /> <% <br /> if cint(PageNo)<>PageNum then'分页 <br /> response.write "<a href='index.asp?PageNo="&(PageNo+1)&"'>上一页</a>" <br /> end if <br /> if cint(PageNo)<>1 then <br /> response.write "<a href='index.asp?PageNo="&(PageNo-1)&"'>下一页</a> " <br /> end if <br /> %> <br /> </td> <br /> </tr> <br /> </table> <br /> </body> <br /> </html> </p>