用ASP+XML打造酷酷留言本2

來源:互聯網
上載者:User
 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>
 


  六、建立寫新留言程式(PostNew.asp)
  這個檔案要實現的功能就是寫入新的XML節點,首先建立一個XML對像然後把XML讀入記憶體中,利用appendChild()方法加入我們產生的XML節點。


   <%
  username=request.form("username")
  if username<>"" then
  fromwhere =request.form("fromwhere")
  homepage =request.form("homepage")
  email =request.form("email")
  text =request.form("text")
  text =replace(text,"<","<")
  Posttime =now()
  strSourceFile = Server.MapPath("/") & "\List.xml"
  '擷取XML檔案的路徑這雷根據你的虛擬目錄不同而不同
  Set objXML = Server.CreateObject("Microsoft.XMLDOM")
  '建立XML對像
  objXML.load(strSourceFile)
  '把XML檔案讀入記憶體中
  Set objRootlist = objXML.documentElement.selectSingleNode("NewList")
  '選取<NewList>節點
  if objRootlist.hasChildNodes then
  '判斷<NewList>是否有子節點(因為如果是每一次<NewList>是沒有子節點的,
  ’ 如果不加判斷在第一次運得時就會報錯
  id = objRootlist.lastchild.firstchild.text+1
  '這裡獲得將要插入子節點的ID號,其ID號為<NewList>的最後一個子節點(lastchild)的第一個子節點(firstchild)的ID號加1(這裡我們按照關係型資料庫的ID號來遞增)
  else
  '如是沒有字子節點則是第一次留言ID號設為1
  id=1
  end if
  brstr=chr(13)&chr(10)&chr(9)
  '為了插入XML檔案中的節點換行空格排列整齊
  ’(當然你也可以不用這樣只是為了XML資料好看而以)
  XMLnode=brstr&"<list>"&brstr & _
  "<id>"&id&"</id>"&brstr & _
  "<username>"&username&"</username>"&brstr & _
  "<fromwhere>"&fromwhere&"</fromwhere>"&brstr & _
  "<Posttime>"&Posttime&"</Posttime>"&brstr & _
  "<homepage>"&homepage&"</homepage>"&brstr & _
  "<email>"&email&"</email>"&brstr & _
  "<text>"&text&"</text>"&brstr & _
  "</list>"&chr(13)
  '根據得到的資料建立XML片段
  set objXML2=Server.CreateObject("Microsoft.XMLDOM")
  '建立一個新XML對像
  objXML2.loadXML(XMLnode)
  '把XML版片段讀入記憶體中
 


 set rootNewNode=objXML2.documentElement
  '獲得objXML2的根節點
  objRootlist.appendChild(rootNewNode)
  '把XML片段插入到List.xml中
  objXML.save(strSourceFile)
  '儲存lsit.xml檔案(因為不儲存List.xml只在記憶體中更新了)
  set objXML=nothing
  set objXML2=nothing
  response.write "謝謝您的留言"
  response.end

  end if
  %>
  <html>
  <head>
  <title>Untitled Document</title>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  <style type="text/css">
  <!--
  td { font-size: 9pt}
  -->
  </style>
  </head>
  <body bgcolor="#0099CC" text="#000000">
  <table width="80%" border="0" cellspacing="1" cellpadding="4" align="center" bgcolor="#FFFFFF">
  <form action="PostNew.asp" method="post" name="form1">
  <tr bgcolor="#000000">
  <td colspan="2"><font color="#FFFFFF">新留言</font></td>
  </tr>
  <tr bgcolor="#EFEFEF">
  <td width="19%" align="right">姓 名:</td>
  <td width="81%">
  <input type="text" name="username">
  ** </td>
  </tr>
  <tr bgcolor="#EFEFEF">
  <td width="19%" align="right">來 自:</td>
  <td width="81%">
  <input type="text" name="fromwhere" value="中國">
  </td>
  </tr>
  <tr bgcolor="#EFEFEF">
  <td width="19%" align="right">主 頁:</td>
  <td width="81%">
  <input type="text" name="homepage" value="http://">
  </td>
  </tr>
  <tr bgcolor="#EFEFEF">
  <td width="19%" align="right">Email:</td>
  <td width="81%">
  <input type="text" name="email">
  </td>
  </tr>
  <tr bgcolor="#EFEFEF">
  <td width="19%" align="right" valign="top">內 容:</td>
  <td width="81%">
  <textarea name="text" cols="60" rows="10"></textarea>
  </td>
  </tr>
  <tr bgcolor="#EFEFEF">
  <td width="19%" align="right"> </td>
  <td width="81%">
  <input type="submit" name="Submit" value="提交">
  <input type="reset" name="Submit2" value="重填">
  </td>
  </tr>
  </form>
  </table>
  </body>
  </html>
 


  七、總結

  到這裡我們就建立一個簡單並有分頁功能的XML留言本了,呵看完了簡單吧,其實我這裡只起一個拋磚引玉的功能,其目的是引導大家建立更複雜更好的ASP+XML程式,例如:所上面的留言本加上回複功能,管理功能,點擊計資料功能等,甚至你可以把它變一個BBS等等。最後留言本運行結果如下:

  (List.xml在IE5下面的運行結果)

  (留言本index.asp運行結果)


  (PostNew.asp運得結果)


  最後如果你拷貝我上面的程式的不能運行,可是是拷貝時或者是我注釋時出錯了(不過首頁要檢查 strSourceFile = Server.MapPath("/") & "\List.xml"這裡是否出錯了,不過我可以告訴你如果是提示缺少對像那麼多是這裡出錯了),最後你可以到http://Page2000.xiloo.com去下載來源程式,也可以給我來信asp_boys@cmmail.com我會儘快給你寄去來源程式。如果你有什麼問題可以到http://www.4u2v.com/bbs因為我多在那裡回答一些我知道的問題。




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.