1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

一个XML的问题,请大家帮忙

本帖由 小狼2006-09-09 发布。版面名称:源码讨论

  1. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    <% dim objXML,strSourcefile,str
    str="List.xml"
    strSourceFile = Server.MapPath(str)
    '获取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"></head>
    <body bgcolor="#006600"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 herf="postnew.asp"><font color="#FFFFFF">写留言</font></a></font><./td>
    </tr>
    <% dim AllNodesNum
    pageSize=10' 每页显示10条留言
    AllNodesNum =objRootsite.childNodes.length-1
    '获取子节点数据(因为是从节点数从0开始的所最大节点数)
    PageNum=AllNodesNum\pagesize+1 '算出总页数
    PageNo=request.querystring("PageNo")
    if PageNo="" then '如果是每一次获取页面则定位到每一页显示最新的留言
    PageNo=PageNum
    end if
    StarNodes=PageNo*PageSize-1'获得起始节点
    EndNodes=(PageNo-1)*PageSize'获得结束节点
    if StarNodes>allNodesNum then'判断起始节点数是否超过总节数
    EndNodes=EndNodes-(StarNodes-AllNodesNum)
    '如果超过则结束节点要减去(StarNodes-AllNodesNum)
    StarNodes=AllNodsNum
    end if
    if EndNodes<0 then
    EndNodes=0
    end if
    while StarNodes>=EndNodes
    '从结束节点到始节点之间读取节点数据
    username=objRootsite.childNodes.item(StarNodes).childNodes.item(1).text
    '获取用户名
    fromwhere=objRoootsite.childNode.item(StarNodes).childNodes.item(2).text
    '获得用户来自哪里
    Posttime=objRootsite.childNodes.item(StarNodes).childNodes.item(3).text
    '获取用户时间
    email=objRoootsite.childNode.item(StarNodes).childNodes.item(4).text
    '获得用户来自哪里
    text=objRoootsite.childNode.item(StarNodes).childNodes.item(5).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="FOFOFO">
    <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>


    错误描述: 缺少对象


    错误编号: -2146827864

    错误类型:
    Microsoft VBScript 运行时错误 (0x800A01A8)
    /liuyanban/index.asp, 第 22 行

    第22行是AllNodesNum =objRootsite.childNodes.length-1
    请大家帮我看看
     
  2. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    叶子,
    老鬼`
    很多人`~
    帮忙啊`
    看看也行~``
    给个思路也行啊~~