asp使用MSXML2.DOMDocument載入網路上的xml檔案時,在調用load方法前需要注意設定:
複製代碼 代碼如下:
oXML.setProperty "ServerHTTPRequest", true
即啟用ServerHTTPRequest請求,要不會出現系統錯誤: -2146697209。
asp使用MSXML2.DOMDocument組件時需要注意一下4中情況
複製代碼 代碼如下:
<%
Dim oXML, oXMLError, ReturnValue, x
Set oXML = Server.CreateObject("MSXML2.DOMDocument")
' 設定DOMDocument載入xml檔案時是非同步載入,還是同步載入
oXML.async = false'==========A
' 設定目的: True/False,表示是否使用“伺服器安全”的ServerXMLHTTP組件載入xml文檔
oXML.setProperty "ServerHTTPRequest", true'==========B
' 通過HTTP載入網路xml檔案件
ReturnValue = oXML.Load("http://localhost/asp/ServerXML.xml")'==========C
'或者載入伺服器本地xml檔案
'ReturnValue = oXML.Load("d:\test.xml")'==========D
' 打出DOMDocument.load的傳回值:
Response.write "Result of load method is =" & ReturnValue & "<br>"
%>
第一種情況(載入空文檔):
預設情況下,DOMDocument對象的async屬性是TRUE,即非同步方式載入。 而且載入時不使用ServerXMLHTTP組件。 即注釋掉上面代碼中的第A行和B行代碼。
複製代碼 代碼如下:
'oXML.async = false'==========A
'oXML.setProperty "ServerHTTPRequest", true'==========B
這時候,載入會成功。 ReturnValue將會是TRUE。 但是載入到DOMDocument中的XML文檔為空白!也就是說,load方法返回的TRUE是一個幌子! 結果如下所示: 對於這種情況,程式員一定要小心! XML雖然沒有報告任何錯誤,而且load方法也表明成功,但是DOM的xml屬性卻為空白。
第二種情況(錯誤原因為: -2146697209):
如果你顯式地聲明async屬性為FALSE,即同步方式載入XML文檔。 而且載入時不使用ServerXMLHTTP組件。 即只注釋掉上面代碼中的第B行代碼。
複製代碼 代碼如下:
oXML.async = false'==========A
'oXML.setProperty "ServerHTTPRequest", true'==========B
那麼將會遭遇失敗!ReturnValue將是False。 錯誤原因為: -2146697209 - 無所需資源的可用資料。 也就說,同步載入Internet上的XML資源是不會成功的!!
第三種情況(不允許):
如果你的async屬性為TRUE,即非同步方式載入XML文檔。 而且載入時使用ServerXMLHTTP組件。 即啟用上面代碼中的第B行代碼。注釋掉第A行代碼。
複製代碼 代碼如下:
'oXML.async = false'==========A
oXML.setProperty "ServerHTTPRequest", true'==========B
報告了錯誤!說明使用SXH組件非同步載入XML文檔,是不被允許的! 錯誤描述為: -1072897486 - The ServerHTTPRequest property can not be used when loading a document asynchronously and is only supported on Windows NT 4.0 and above.
第四種情況(正確使用):
如果你顯式地聲明async屬性為FALSE,即同步方式載入XML文檔。 而且載入時使用ServerXMLHTTP組件。 即啟用上面代碼中的第A和B行代碼。
複製代碼 代碼如下:
oXML.async = false'==========A
oXML.setProperty "ServerHTTPRequest", true'==========B
那就可以了!說明使用SXH組件載入XML文檔,能夠糾正了非同步方式載入Internet資源的錯誤。
總結
| 載入方式 |
是否使用 ServerXMLHTTP組件 |
載入結果 |
| 非同步載入 |
不使用 |
載入會成功。 但是載入到DOMDocument中的XML文檔為空白 |
| 同步載入 |
不使用 |
將會遭遇失敗!錯誤原因為: -2146697209 - 無所需資源的可用資料。 |
| 非同步載入 |
使用 |
不被允許的 |
| 同步載入 |
使用 |
真正成功 |