這篇文章主要介紹了asp中使用MSXML2.DOMDocument處理XML資料時的注意事項,本文給出了4個需要注意的問題,需要的朋友可以參考下
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 - 無所需資源的可用資料。 |
| 非同步載入 | 使用 | 不被允許的 |
| 同步載入 | 使用 | 真正成功 |