Artikel ini terutama memperkenalkan tindakan pencegahan saat menggunakan MSXML2.DOMDocument untuk memproses data XML di asp. Artikel ini memberikan 4 masalah yang perlu diperhatikan. Teman yang membutuhkan dapat merujuk ke berikut ini
Ketika asp menggunakan MSXML2.DOMDocument untuk memuat file xml di jaringan, Anda perlu memperhatikan pengaturan sebelum memanggil metode load:
Copy kode kodenya sebagai berikut:oXML.setProperty ServerHTTPRequest, benar
Artinya, jika permintaan ServerHTTPRequest diaktifkan, kesalahan sistem tidak akan terjadi: -2146697209.
Saat menggunakan komponen MSXML2.DOMDocument di asp, Anda perlu memperhatikan 4 situasi berikut:
Copy kode kodenya sebagai berikut:<%
Redupkan oXML, oXMLError, ReturnValue, x
Setel oXML = Server.CreateObject(MSXML2.DOMDocument)
' Setel apakah DOMDocument memuat file xml secara asinkron atau sinkron
oXML.async = false'==========A
' Tujuan pengaturan: Benar/Salah, menunjukkan apakah akan menggunakan komponen ServerXMLHTTP yang aman di server untuk memuat dokumen xml
oXML.setProperty ServerHTTPRequest, benar'==========B
'Muat file xml jaringan melalui HTTP
Nilai Pengembalian = oXML.Beban(http://localhost/asp/ServerXML.xml)'==========C
'Atau muat file xml lokal server
'Nilai Pengembalian = oXML.Beban(d:/test.xml)'==========D
' Cetak nilai kembalian DOMDocument.load:
Response.write Hasil dari metode load adalah = & ReturnValue & <br>
%>
Kasus pertama (memuat dokumen kosong):
Secara default, atribut async dari objek DOMDocument adalah TRUE, yang berarti objek tersebut dimuat secara asinkron. Dan komponen ServerXMLHTTP tidak digunakan saat memuat. Artinya, beri komentar pada baris A dan B pada kode di atas.
Copy kode kodenya sebagai berikut:'oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest, benar'==========B
Saat ini, pemuatan akan berhasil. ReturnValue akan menjadi BENAR. Namun dokumen XML yang dimuat ke DOMDocument kosong! Dengan kata lain, TRUE yang dikembalikan oleh metode load adalah penutup! Hasilnya seperti ini: Pemrogram harus berhati-hati dalam hal ini! Meskipun XML tidak melaporkan kesalahan apa pun, dan metode pemuatan juga menunjukkan keberhasilan, atribut xml dari DOM kosong.
Kasus kedua (alasan kesalahan: -2146697209):
Jika Anda secara eksplisit mendeklarasikan atribut async ke FALSE, dokumen XML dimuat secara sinkron. Dan komponen ServerXMLHTTP tidak digunakan saat memuat. Artinya, hanya mengomentari baris B pada kode di atas.
Copy kode kodenya sebagai berikut:oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest, benar'==========B
Maka Anda akan menemui kegagalan! ReturnValue akan menjadi Salah. Alasan kesalahannya adalah: -2146697209 - Tidak ada data tersedia untuk sumber daya yang diperlukan. Dengan kata lain, memuat sumber daya XML secara sinkron di Internet tidak akan berhasil! !
Kasus ketiga (tidak diperbolehkan):
Jika atribut async Anda TRUE, dokumen XML dimuat secara asinkron. Dan gunakan komponen ServerXMLHTTP saat memuat. Artinya, aktifkan baris B pada kode di atas. Komentari baris kode A.
Copy kode kodenya sebagai berikut:'oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest, benar'==========B
Melaporkan bug! Perhatikan bahwa menggunakan komponen SXH untuk memuat dokumen XML secara asinkron tidak diperbolehkan! Deskripsi kesalahannya adalah: -1072897486 - Properti ServerHTTPRequest tidak dapat digunakan saat memuat dokumen secara asinkron dan hanya didukung pada Windows NT 4.0 dan yang lebih baru.
Kasus keempat (penggunaan yang benar):
Jika Anda secara eksplisit mendeklarasikan atribut async ke FALSE, dokumen XML dimuat secara sinkron. Dan gunakan komponen ServerXMLHTTP saat memuat. Artinya, aktifkan baris A dan B pada kode di atas.
Copy kode kodenya sebagai berikut:oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest, benar'==========B
Itu saja! Ini menunjukkan bahwa menggunakan komponen SXH untuk memuat dokumen XML dapat memperbaiki kesalahan pemuatan sumber daya Internet yang tidak sinkron.
Meringkaskan
Metode pemuatan | Apakah akan digunakan Komponen ServerXMLHTTP | Memuat hasil |
| Pemuatan asinkron | Tidak digunakan | Pemuatan akan berhasil. Namun dokumen XML yang dimuat ke DOMDocument kosong |
| Pemuatan sinkron | Tidak digunakan | Akan menemui kegagalan! Alasan kesalahannya adalah: -2146697209 - Tidak ada data tersedia untuk sumber daya yang diperlukan. |
| Pemuatan asinkron | menggunakan | tidak diperbolehkan |
| Pemuatan sinkron | menggunakan | benar-benar sukses |