Este artículo presenta principalmente las precauciones al usar MSXML2.DOMDocument para procesar datos XML en ASP. Este artículo brinda 4 problemas que necesitan atención. Los amigos que lo necesiten pueden consultar lo siguiente.
Cuando ASP usa MSXML2.DOMDocument para cargar archivos xml en la red, debe prestar atención a la configuración antes de llamar al método de carga:
Copie el código de código de la siguiente manera:oXML.setProperty ServerHTTPRequest, verdadero
Es decir, si la solicitud ServerHTTPRequest está habilitada, no se producirá un error del sistema: -2146697209.
Cuando utilice el componente MSXML2.DOMDocument en ASP, debe prestar atención a las siguientes 4 situaciones:
Copie el código de código de la siguiente manera:<%
Dim oXML, oXMLError, ReturnValue, x
Establecer oXML = Server.CreateObject(MSXML2.DOMDocument)
'Establece si DOMDocument carga archivos xml de forma asincrónica o sincrónica
oXML.async = falso'==========A
' Propósito de la configuración: Verdadero/Falso, que indica si se debe utilizar el componente ServerXMLHTTP seguro para el servidor para cargar documentos xml
oXML.setProperty ServerHTTPRequest, verdadero'==========B
'Cargar el archivo xml de red a través de HTTP
ValorRetorno = oXML.Load(http://localhost/asp/ServerXML.xml)'==========C
'O cargar el archivo xml local del servidor
'ValorRetorno = oXML.Load(d:/test.xml)'==========D
' Imprime el valor de retorno de DOMDocument.load:
Response.write El resultado del método de carga es = & ReturnValue & <br>
%>
Primer caso (cargando documento vacío):
De forma predeterminada, el atributo asíncrono del objeto DOMDocument es VERDADERO, lo que significa que se carga de forma asincrónica. Y el componente ServerXMLHTTP no se utiliza durante la carga. Es decir, comente las líneas A y B del código anterior.
Copie el código de código de la siguiente manera:'oXML.async = falso'==========A
'oXML.setProperty ServerHTTPRequest, verdadero'==========B
En este momento, la carga será exitosa. El valor de retorno será VERDADERO. ¡Pero el documento XML cargado en DOMDocument está vacío! En otras palabras, ¡el VERDADERO devuelto por el método de carga es una tapadera! El resultado es el siguiente: ¡Los programadores deben tener cuidado en este caso! Aunque el XML no informa ningún error y el método de carga también indica éxito, el atributo xml del DOM está vacío.
El segundo caso (motivo del error: -2146697209):
Si declara explícitamente el atributo async en FALSE, el documento XML se carga sincrónicamente. Y el componente ServerXMLHTTP no se utiliza durante la carga. Es decir, solo comente la línea B en el código anterior.
Copie el código de código de la siguiente manera:oXML.async = falso'==========A
'oXML.setProperty ServerHTTPRequest, verdadero'==========B
¡Entonces encontrarás el fracaso! El valor de retorno será falso. El motivo del error es: -2146697209: no hay datos disponibles para el recurso requerido. En otras palabras, ¡cargar recursos XML en Internet sincrónicamente no será posible! !
Tercer caso (no permitido):
Si su atributo async es VERDADERO, el documento XML se carga de forma asincrónica. Y utilice el componente ServerXMLHTTP al cargar. Es decir, habilite la línea B en el código anterior. Comente la línea A del código.
Copie el código de código de la siguiente manera:'oXML.async = falso'==========A
oXML.setProperty ServerHTTPRequest, verdadero'==========B
¡Se informó un error! Tenga en cuenta que no se permite el uso de componentes SXH para cargar documentos XML de forma asincrónica. La descripción del error es: -1072897486: la propiedad ServerHTTPRequest no se puede utilizar al cargar un documento de forma asíncrona y sólo se admite en Windows NT 4.0 y superior.
El cuarto caso (uso correcto):
Si declara explícitamente el atributo async en FALSE, el documento XML se carga sincrónicamente. Y utilice el componente ServerXMLHTTP al cargar. Es decir, habilite las líneas A y B en el código anterior.
Copie el código de código de la siguiente manera:oXML.async = falso'==========A
oXML.setProperty ServerHTTPRequest, verdadero'==========B
¡Eso es todo! Muestra que el uso del componente SXH para cargar documentos XML puede corregir el error de carga asincrónica de recursos de Internet.
Resumir
Método de carga | Ya sea para usar Componente ServerXMLHTTP | Cargar resultados |
Carga asincrónica | No usado | La carga será exitosa. Pero el documento XML cargado en DOMDocument está vacío |
Carga sincrónica | No usado | ¡Encontrará el fracaso! El motivo del error es: -2146697209: no hay datos disponibles para el recurso requerido. |
Carga asincrónica | usar | no permitido |
Carga sincrónica | usar | verdaderamente exitoso |