当前位置:沸点梦工场 > 网页编程 > Asp教程 > 浏览文章

用ASP+XML编写留言本程序

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

下一页
本文共 2 页,第  [1]  [2]  页