标题:高手们请指教,关于ASP+XML的问题!
只看楼主
H_J_H
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-2-1
 问题点数:0 回复次数:0 
高手们请指教,关于ASP+XML的问题!

在网上发现一个简单的ASP+XML的留言版,就复制下来调试,但发现有问题,请各位大大告诉我怎样修改啊? index.asp的代码: <% strSourceFile = Server.MapPath("list.xml") '获取XML文件的路径这里根据你的虚拟目录不同而不同 Set objXML = Server.CreateObject("Microsoft.FreeThreadedXMLDOM") '以自由线程创建一个XML对像 objXML.load(strSourceFile)'把XML文件读入内存 Set objRootsite = objXML.documentElement.selectSingleNode("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>节点的子节点才是我们真正所要的) '******************************************************************************

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="mailt<%=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> ------------------------结束 出错地方是在第 50 行 说我 缺少对象: 'objRootsite.childNodes.item(...).childNodes.item(...)'

而PostNew.asp的代码: <% 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> -------------------------------->结束

出错地方是在第 21 行 说我 缺少对象: 'objRootlist.lastchild' 请问究竟怎样修改啊?

搜索更多相关主题的帖子: XML ASP 指教 
2005-02-20 11:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-12351-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.149428 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved