asp中使用MSXML2.DOMDocument處理XML資料時的注意事項_應用技巧

來源:互聯網
上載者:User

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 - 無所需資源的可用資料。
非同步載入 使用 不被允許的
同步載入 使用 真正成功

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.