当前位置: 首页 > 图文教程 > 网络编程 > ASP > 用ASP+XML打造留言本(2)

ASP
ASP调用ORACLE存储过程并返回结果集
用ASP实现网页BBS
关于Global.asa文件的深入研究与session变量失效提示的具体方法
简易ASP+注册系统
防护手册:如何防止ASP木马在服务器上运行
用Visual Basic实现多画面播放功能之二
如何增强ASP程序性能(1)
如何增强ASP程序性能(2)
如何增强ASP程序性能(3)
ASP备份数据库
二十八条改善 ASP 性能和外观的技巧
在Form域中Post大于100K的数据
如何使用ASP制作模似动态生长的表单?
Microsoft IIS 真的如此「不安全」吗?(1)
Microsoft IIS 真的如此「不安全」吗?(2)
Microsoft IIS 真的如此「不安全」吗?(3)
Microsoft IIS 真的如此「不安全」吗?(4)
Microsoft IIS 真的如此「不安全」吗?(5)
关于页面和代码分离
ServerVariables 对路径的操作

用ASP+XML打造留言本(2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 23 ::
收藏到网摘: n/a

       五、建立显示XML数据的ASP文件(index.asp)
  
    这个文件要实现的功能就是读取并显示XML数据,首先创建一个XML对像然后把XML读入内存中,利用DOM分离出我们所要的数据。
  
  <%
  strSourceFile = Server.MapPath("/") & "\List.xml"
  '获取XML文件的路径这里根据你的虚拟目录不同而不同
  Set objXML = Server.CreateObject("Microsoft.FreeThreadedXMLDOM")
  '以自由线程创建一个XML对像
  objXML.load(strSourceFile)'把XML文件读入内存
  Set objRootsite = objXML.documentElement.selectSingleNode("NewList")
  '选取NewList节点
  %>
  <html>
  <head>
  <title>留言本</title>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <style type="text/css">
  <!--
  td { font-family: "宋体"; font-size: 9pt; text-decoration: none}
  a { font-family: "宋体"; font-size: 9pt; color: #0066CC; text-decoration: none}
  a:hover { color: #FF6600; text-decoration: underline}
  -->
  </style>
  </head><body bgcolor="#0099CC" text="#000000">
  <table width="80%" border="0" cellspacing="1" cellpadding="4" align="center" bgcolor="#CCCCCC">
  <tr bgcolor="#000000">
  <td colspan="2"><font color="#FFFFFF">留言溥 <a href="PostNew.asp"><font color=#FFFFFF>写新留言</font></a></font></td>
  </tr>
  <%
  PageSize =10'假设每页显示10条留言
  AllNodesNum =objRootsite.childNodes.length-1
  '获取子节点数据(因为是从节点数从0开始的所最大子节点数要减1)
  PageNum=AllNodesNum\PageSize+1'算出总页数
  PageNo=request.querystring("PageNo")
  if PageNo="" then'如果是每一次获得页面则定位到每一页显示最新的留言
  PageNo=PageNum
  end if
  StarNodes=PageNo*PageSize-1'获得起始节点
  EndNodes=(PageNo-1)*PageSize'获得结束节点
  if EndNodes<0 then
  EndNodes=0
  end if
  if StarNodes>AllNodesNum then'判断起始节点数是否超过总的节点数
  EndNodes=EndNodes-(StarNodes-AllNodesNum)
  '如果超过则结束节点要减去(StarNodes-AllNodesNum)的差值否则下标会超界出错
  StarNodes=AllNodesNum
  end if
  if EndNodes<0 then
  EndNodes=0
  end if
  while StarNodes>=EndNodes
  '从结束节点到超始节点之间读取节点数据
  username = objRootsite.childNodes.item(StarNodes).childNodes.item(1).text
  '获得用户名
  fromwhere = objRootsite.childNodes.item(StarNodes).childNodes.item(2).text
  '获得用户来自那里
  Posttime = objRootsite.childNodes.item(StarNodes).childNodes.item(3).text
  '获得留言时间
  homepage = objRootsite.childNodes.item(StarNodes).childNodes.item(4).text
  '获得用户主页
  email = objRootsite.childNodes.item(StarNodes).childNodes.item(5).text
  '获得用户Eamil
  text = objRootsite.childNodes.item(StarNodes).childNodes.item(6).text
  '获昨留言内容
  
  '*****************************************************************************
  '这里使作了XML的DOM来读取数据,显然objRootsite对像所对应的节点为<NewList>
  ' objRootsite.childNodes.item(StarNodes)所对应的节点就是<list>节点因为不至一个<list>节点所以用了item()来识别当前节点数据,随着StarNodes的递减<list>节点根着往上移一个个读取<list>节点数据。
  'objRootsite.childNodes.item(StarNodes).childNodes.item(1).text所对应的节点为具体的每个节点的文本值,这里(1)所对应的就是username用户名(因为<list>节点的子节点才是我们真正所要的)
  '***************************