2010-02-06 48 views
1

我已經從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

提到的錯誤是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 
+0

「labels」是文檔元素,所以documentElement.selectSingleNode調用應該確實返回一個標籤節點。 – wsanville 2010-02-06 03:19:46

+1

我需要使用selectSingleNode的完整路徑才能正常工作。 – chobo 2010-02-09 07:00:03

2

我試過你的代碼和它的工作原理測試成功返回。所以我可以想到兩個可能的原因。

  1. 錯誤來自objXMLDoc.load而不是objXMLDoc.selectSingleNode拋出這意味着XML文件未找到(或許可被拒絕?)。檢查文件路徑是否確實有效並且可以訪問。嘗試Response.write objXMLDoc.text以查看是否可以獲取任何內容,也應顯示「某些標籤」。

  2. 我只是猜測,但它可能會因爲不同版本的「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 
+0

我也試過切換msxml版本。我不確定這是否有幫助。 – chobo 2010-02-09 07:00:27

相關問題