我已从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>
答案 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)
我已经尝试过您的密码并且有效。所以我可以想到两个可能的原因。
从objXMLDoc.load
而不是objXMLDoc.selectSingleNode
引发错误,这意味着找不到XML文件(或者权限被拒绝?)。检查文件路径是否确实有效并且可以访问。试试Response.write objXMLDoc.text
看看你能不能得到任何东西,它也应该显示“Some label”。
我只是猜测,但可能是由于“MSXML”库的不同版本
如果不是原因1,您可能需要尝试以下代码(来自MSDN reference):
objXMLDoc.setProperty "SelectionLanguage", "XPath" 'add this line
Dim Node
Set Node = objXMLDoc.documentElement.selectSingleNode("//label") 'use //label
Response.write Node.text