为什么我经常遇到对象错误?
我已经从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>
提到的错误是prob巧妙地在最后一行的水平。假设对XMLDOM对象的所有其他调用都能正常工作,selectSingleNode将返回空,因为找不到“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
我试过你的代码和它的工作原理测试成功返回。所以我可以想到两个可能的原因。
错误来自
objXMLDoc.load
而不是objXMLDoc.selectSingleNode
抛出这意味着XML文件未找到(或许可被拒绝?)。检查文件路径是否确实有效并且可以访问。尝试Response.write objXMLDoc.text
以查看是否可以获取任何内容,也应显示“某些标签”。我只是猜测,但它可能会因为不同版本的“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
我也试过切换msxml版本。我不确定这是否有帮助。 – chobo 2010-02-09 07:00:27
“labels”是文档元素,所以documentElement.selectSingleNode调用应该确实返回一个标签节点。 – wsanville 2010-02-06 03:19:46
我需要使用selectSingleNode的完整路径才能正常工作。 – chobo 2010-02-09 07:00:03