top
Loading...
用ASP+XML打造留言本-2
五、建立顯示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=AllNodesNumPageSize+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>節點的子節點才是我們真正所要的)
'******************************************************************************

text = replace(text,chr(13),"<br>")
'替代回車
text = replace(text,chr(32)," ")
'替代空格
%>
<tr bgcolor="#F0F0F0">
<td width="21%" height="94" valign="top">姓 名:<%=username%><br>
來 自:<%=fromwhere%><br>
</td>
<td width="79%" height="94" valign="top"> | <a href="<%=homepage%>" target=_blank title="<%=username%
>的主頁">主頁</a>
| | <a href="mailto:<%=email%>" title="給<%=username%>寫信">信箱</a> | |<font color="#CC6633">
留言時間:<%=Posttime%> </font>|
<hr>
<%=text%> </td>
</tr>
<tr bgcolor="#FFFFFF" align="right">
<td colspan="2"> </td>
</tr>
<%
StarNodes=StarNodes-1
wend
set objXML=nothing
%>
<tr bgcolor="#FFFFFF" align="right">
<td colspan="2"> 共有<<%=PageNum%>>頁
<%
if cint(PageNo)<>PageNum then'分頁
response.write "<a href='index.asp?PageNo="&(PageNo+1)&"'>上一頁</a>"
end if
if cint(PageNo)<>1 then
response.write "<a href='index.asp?PageNo="&(PageNo-1)&"'>下一頁</a> "
end if
%>
</td>
</tr>
</table>
</body>
</html>

北斗有巢氏 有巢氏北斗