为什么我经常遇到对象错误?

时间:2010-02-06 02:00:10

标签: asp-classic

我已从http://devguru.org/Technologies/xmldom/quickref/node_selectSingleNode.html

剪切并粘贴此示例

我无法让它发挥作用。

我一直遇到像这样的对象错误:

Microsoft VBScript运行时(0x800A01A8) 需要对象

这是我正在使用的代码和xml文件

    <%
    option explicit

    Dim objXMLDoc

    Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
    objXMLDoc.async = False
    objXMLDoc.load(Server.MapPath("vocabulary.xml"))

    Dim Node

Set Node = objXMLDoc.documentElement.selectSingleNode("label")
Response.write Node.text

%>

xml文件

<?xml version="1.0" encoding="utf-8" ?>
    <labels>
        <label>Some label</label>
    </labels>

2 个答案:

答案 0 :(得分:3)

提到的错误可能在最后一行的级别。假设对XMLDOM对象的所有其他调用都顺利进行, selectSingleNode将返回null ,因为找不到“label”作为路径。

尝试

Set Node = objXMLDoc.documentElement.selectSingleNode("labels/label")

代替。或者,对于这种类型的DOM逻辑,这是一个很好的做法,您可以测试selectSingleNode的成功返回

Set Node = objXMLDoc.documentElement.selectSingleNode("label")
If Node = Nothing
Ehen
   Response.Write  "Not found..."
Else
Response.Write Node.text

答案 1 :(得分:3)

我已经尝试过您的密码并且有效。所以我可以想到两个可能的原因。

  1. objXMLDoc.load而不是objXMLDoc.selectSingleNode引发错误,这意味着找不到XML文件(或者权限被拒绝?)。检查文件路径是否确实有效并且可以访问。试试Response.write objXMLDoc.text看看你能不能得到任何东西,它也应该显示“Some label”。

  2. 我只是猜测,但可能是由于“MSXML”库的不同版本

  3. 如果不是原因1,您可能需要尝试以下代码(来自MSDN reference):

    objXMLDoc.setProperty "SelectionLanguage", "XPath" 'add this line
    Dim Node
    Set Node = objXMLDoc.documentElement.selectSingleNode("//label") 'use //label
    Response.write Node.text