Cet article présente principalement les précautions lors de l'utilisation de MSXML2.DOMDocument pour traiter des données XML dans asp. Cet article présente 4 problèmes qui nécessitent une attention particulière. Les amis dans le besoin peuvent se référer à ce qui suit.
Lorsque asp utilise MSXML2.DOMDocument pour charger des fichiers XML sur le réseau, vous devez faire attention aux paramètres avant d'appeler la méthode de chargement :
Copiez le code comme suit :oXML.setProperty ServerHTTPRequest, vrai
Autrement dit, si la requête ServerHTTPRequest est activée, aucune erreur système ne se produira : -2146697209.
Lorsque vous utilisez le composant MSXML2.DOMDocument en asp, vous devez faire attention aux 4 situations suivantes :
Copiez le code comme suit :<%
Dim oXML, oXMLError, ReturnValue, x
Définir oXML = Server.CreateObject (MSXML2.DOMDocument)
' Définir si DOMDocument charge les fichiers XML de manière asynchrone ou synchrone
oXML.async = false'==========A
' Objectif du paramètre : Vrai/Faux, indiquant s'il faut utiliser le composant ServerXMLHTTP sécurisé pour le serveur pour charger des documents XML.
oXML.setProperty ServerHTTPRequest, true'==========B
'Charger le fichier XML du réseau via HTTP
ReturnValue = oXML.Load (http://localhost/asp/ServerXML.xml)'==========C
'Ou chargez le fichier XML local du serveur
'ReturnValue = oXML.Load(d:/test.xml)'==========D
' Imprime la valeur de retour de DOMDocument.load :
Response.write Le résultat de la méthode de chargement est = & ReturnValue & <br>
%>
Premier cas (chargement d'un document vide) :
Par défaut, l'attribut async de l'objet DOMDocument est TRUE, ce qui signifie qu'il est chargé de manière asynchrone. Et le composant ServerXMLHTTP n'est pas utilisé lors du chargement. Autrement dit, commentez les lignes A et B dans le code ci-dessus.
Copiez le code comme suit :'oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest, true'==========B
À ce moment-là, le chargement réussira. ReturnValue sera VRAI. Mais le document XML chargé dans le DOMDocument est vide ! En d’autres termes, le TRUE renvoyé par la méthode load est une couverture ! Le résultat ressemble à ceci : les programmeurs doivent être prudents dans ce cas ! Bien que le XML ne signale aucune erreur et que la méthode de chargement indique également le succès, l'attribut XML du DOM est vide.
Le deuxième cas (raison de l'erreur : -2146697209) :
Si vous déclarez explicitement l'attribut async sur FALSE, le document XML est chargé de manière synchrone. Et le composant ServerXMLHTTP n'est pas utilisé lors du chargement. Autrement dit, commentez uniquement la ligne B dans le code ci-dessus.
Copiez le code comme suit :oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest, true'==========B
Alors vous rencontrerez un échec ! ReturnValue sera False. La raison de l'erreur est : -2146697209 - Aucune donnée disponible pour la ressource requise. En d’autres termes, charger de manière synchrone des ressources XML sur Internet ne réussira pas ! !
Troisième cas (non autorisé) :
Si votre attribut async est TRUE, le document XML est chargé de manière asynchrone. Et utilisez le composant ServerXMLHTTP lors du chargement. Autrement dit, activez la ligne B dans le code ci-dessus. Commentez la ligne A du code.
Copiez le code comme suit :'oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest, true'==========B
Signalé un bug ! Notez que l'utilisation de composants SXH pour charger des documents XML de manière asynchrone n'est pas autorisée ! La description de l'erreur est la suivante : -1072897486 - La propriété ServerHTTPRequest ne peut pas être utilisée lors du chargement d'un document de manière asynchrone et n'est prise en charge que sous Windows NT 4.0 et versions ultérieures.
Le quatrième cas (usage correct) :
Si vous déclarez explicitement l'attribut async sur FALSE, le document XML est chargé de manière synchrone. Et utilisez le composant ServerXMLHTTP lors du chargement. Autrement dit, activez les lignes A et B dans le code ci-dessus.
Copiez le code comme suit :oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest, true'==========B
C'est ça! Il montre que l'utilisation du composant SXH pour charger des documents XML peut corriger l'erreur de chargement asynchrone des ressources Internet.
Résumer
Méthode de chargement | S'il faut utiliser Composant ServerXMLHTTP | Charger les résultats |
| Chargement asynchrone | Non utilisé | Le chargement sera réussi. Mais le document XML chargé dans le DOMDocument est vide |
| Chargement synchrone | Non utilisé | Va rencontrer l'échec ! La raison de l'erreur est : -2146697209 - Aucune donnée disponible pour la ressource requise. |
| Chargement asynchrone | utiliser | non autorisé |
| Chargement synchrone | utiliser | vraiment réussi |