In diesem Artikel werden hauptsächlich die Vorsichtsmaßnahmen bei der Verwendung von MSXML2.DOMDocument zum Verarbeiten von XML-Daten in ASP vorgestellt. In diesem Artikel werden vier Probleme aufgeführt, die Aufmerksamkeit erfordern
Wenn asp MSXML2.DOMDocument zum Laden von XML-Dateien im Netzwerk verwendet, müssen Sie auf die Einstellungen achten, bevor Sie die Lademethode aufrufen:
Kopieren Sie den Codecode wie folgt:oXML.setProperty ServerHTTPRequest, wahr
Das heißt, wenn die ServerHTTPRequest-Anfrage aktiviert ist, tritt kein Systemfehler auf: -2146697209.
Wenn Sie die MSXML2.DOMDocument-Komponente in ASP verwenden, müssen Sie die folgenden vier Situationen beachten:
Kopieren Sie den Codecode wie folgt:<%
Dimmen Sie oXML, oXMLError, ReturnValue, x
Legen Sie oXML = Server.CreateObject(MSXML2.DOMDocument) fest.
' Legen Sie fest, ob DOMDocument XML-Dateien asynchron oder synchron lädt
oXML.async = false'==========A
' Einstellungszweck: True/False, gibt an, ob die serversichere ServerXMLHTTP-Komponente zum Laden von XML-Dokumenten verwendet werden soll
oXML.setProperty ServerHTTPRequest, true'==========B
'Netzwerk-XML-Datei über HTTP laden
ReturnValue = oXML.Load(http://localhost/asp/ServerXML.xml)'==========C
„Oder laden Sie die lokale XML-Datei des Servers
'ReturnValue = oXML.Load(d:/test.xml)'==========D
' Gibt den Rückgabewert von DOMDocument.load aus:
Response.write Ergebnis der Lademethode ist = & ReturnValue & <br>
%>
Erster Fall (Leeres Dokument laden):
Standardmäßig ist das async-Attribut des DOMDocument-Objekts TRUE, was bedeutet, dass es asynchron geladen wird. Und die ServerXMLHTTP-Komponente wird beim Laden nicht verwendet. Das heißt, kommentieren Sie die Zeilen A und B im obigen Code aus.
Kopieren Sie den Codecode wie folgt:'oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest, true'==========B
Zu diesem Zeitpunkt ist der Ladevorgang erfolgreich. ReturnValue wird TRUE sein. Aber das in das DOMDocument geladene XML-Dokument ist leer! Mit anderen Worten: Das von der Lademethode zurückgegebene TRUE ist ein Cover! Das Ergebnis sieht so aus: Programmierer müssen in diesem Fall vorsichtig sein! Obwohl das XML keine Fehler meldet und auch die Lademethode einen Erfolg anzeigt, ist das XML-Attribut des DOM leer.
Der zweite Fall (Fehlergrund: -2146697209):
Wenn Sie das async-Attribut explizit auf FALSE deklarieren, wird das XML-Dokument synchron geladen. Und die ServerXMLHTTP-Komponente wird beim Laden nicht verwendet. Das heißt, kommentieren Sie nur Zeile B im obigen Code aus.
Kopieren Sie den Codecode wie folgt:oXML.async = false'==========A
'oXML.setProperty ServerHTTPRequest, true'==========B
Dann werden Sie scheitern! ReturnValue wird False sein. Der Fehlergrund ist: -2146697209 – Für die erforderliche Ressource sind keine Daten verfügbar. Mit anderen Worten: Das synchrone Laden von XML-Ressourcen im Internet wird nicht gelingen! !
Dritter Fall (nicht zulässig):
Wenn Ihr async-Attribut TRUE ist, wird das XML-Dokument asynchron geladen. Und verwenden Sie beim Laden die ServerXMLHTTP-Komponente. Das heißt, aktivieren Sie Zeile B im obigen Code. Kommentieren Sie Zeile A des Codes aus.
Kopieren Sie den Codecode wie folgt:'oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest, true'==========B
Fehler gemeldet! Beachten Sie, dass die Verwendung von SXH-Komponenten zum asynchronen Laden von XML-Dokumenten nicht zulässig ist! Die Fehlerbeschreibung lautet: -1072897486 – Die ServerHTTPRequest-Eigenschaft kann beim asynchronen Laden eines Dokuments nicht verwendet werden und wird nur unter Windows NT 4.0 und höher unterstützt.
Der vierte Fall (richtige Verwendung):
Wenn Sie das async-Attribut explizit auf FALSE deklarieren, wird das XML-Dokument synchron geladen. Und verwenden Sie beim Laden die ServerXMLHTTP-Komponente. Das heißt, aktivieren Sie die Zeilen A und B im obigen Code.
Kopieren Sie den Codecode wie folgt:oXML.async = false'==========A
oXML.setProperty ServerHTTPRequest, true'==========B
Das ist es! Es zeigt, dass die Verwendung der SXH-Komponente zum Laden von XML-Dokumenten den Fehler des asynchronen Ladens von Internetressourcen beheben kann.
Zusammenfassen
Lademethode | Ob verwendet werden soll ServerXMLHTTP-Komponente | Ergebnisse laden |
| Asynchrones Laden | Nicht verwendet | Der Ladevorgang wird erfolgreich sein. Das in das DOMDocument geladene XML-Dokument ist jedoch leer |
| Synchrones Laden | Nicht verwendet | Wird scheitern! Der Fehlergrund ist: -2146697209 – Für die erforderliche Ressource sind keine Daten verfügbar. |
| Asynchrones Laden | verwenden | nicht erlaubt |
| Synchrones Laden | verwenden | wirklich gelungen |