XML-DOM Parserfehler


Wenn Firefox auf einen Parserfehler stößt, lädt er ein XML-Dokument, das den Fehler enthält.


Parserfehler in Firefox

Ein Parserfehler kann auftreten, wenn Sie versuchen, ein XML-Dokument zu öffnen.

Im Gegensatz zu Internet Explorer lädt Firefox, wenn er auf einen Fehler stößt, ein XML-Dokument, das die Fehlerbeschreibung enthält.

Der Wurzelknoten des XML-Fehlerdokuments heißt "parsererror". Dies wird verwendet, um zu prüfen, ob ein Fehler vorliegt.


XML-Fehler (XML-Fehler)

Im folgenden Code lassen wir den Parser ein fehlerhaftes XML-Dokument laden.

(In unseremXML-Tutorialkönnen Sie mehr über wohlgeformtes und gültiges XML in ... lesen)

Beispiel

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async=false;
xmlDoc.load("note_error.xml");

if (xmlDoc.documentElement.nodeName=="parsererror")
{
errStr=xmlDoc.documentElement.childNodes[0].nodeValue;
errStr=errStr.replace(/</g, "&lt;");
document.write(errStr);
}
else
{
document.write("XML ist gültig");
}

Selbst ausprobieren »

XML-Datei anzeigen:note_error.xml

Beispielerklärung:

  1. XML-Datei laden
  2. Überprüfen, ob der Knotenname des Wurzelknotens "parsererror" ist
  3. Fehlerzeichenfolge in die Variable "errStr" laden
  4. Bevor der Fehler als HTML geschrieben wird, das Zeichen "<" durch "&lt;" ersetzen

Hinweis:Tatsächlich verwendet nur Internet Explorer eine DTD, um Ihr XML zu prüfen; Firefox nicht.


Browserübergreifende Fehlerprüfung

Hier haben wir eine XML-Ladefunktion erstellt, die in Internet Explorer und Firefox auf Parserfehler prüft:

Beispiel

function loadXMLDocErr(dname)
{
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load(dname);

if (xmlDoc.parseError.errorCode != 0)
{
alert("Fehler in Zeile " + xmlDoc.parseError.line +
" Position " + xmlDoc.parseError.linePos +
"nFehlercode: " + xmlDoc.parseError.errorCode +
"nFehlergrund: " + xmlDoc.parseError.reason +
"Fehlerzeile: " + xmlDoc.parseError.srcText);
return(null);
}
}
catch(e)
{
try //Firefox
{
xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async=false;
xmlDoc.load(dname);
if (xmlDoc.documentElement.nodeName=="parsererror")
{
alert(xmlDoc.documentElement.childNodes[0].nodeValue);
return(null);
}
}
catch(e) {alert(e.message)}
}
try
{
return(xmlDoc);
}
catch(e) {alert(e.message)}
return(null);
}

Selbst ausprobieren »

XML-Datei anzeigen:note_error.xml

Beispielerklärung – Internet Explorer:

  1. Die erste Zeile erstellt ein leeres Microsoft-XML-Dokumentobjekt.
  2. Die zweite Zeile schaltet das asynchrone Laden aus, wodurch sichergestellt wird, dass der Parser nicht weiter Skripte ausführt, bevor das Dokument vollständig geladen ist.
  3. Die dritte Zeile weist den Parser an, das XML-Dokument mit dem Namen "note_error.xml" zu laden.
  4. Wenn die ErrorCode-Eigenschaft des parseError-Objekts von "0" abweicht, den Fehler melden und die Funktion beenden.
  5. Wenn die ErrorCode-Eigenschaft "0" ist, das XML-Dokument zurückgeben.

Beispielerklärung – Firefox:

  1. Die erste Zeile erstellt ein leeres XML-Dokumentobjekt.
  2. Die zweite Zeile schaltet das asynchrone Laden aus, wodurch sichergestellt wird, dass der Parser nicht weiter Skripte ausführt, bevor das Dokument vollständig geladen ist.
  3. Die dritte Zeile weist den Parser an, das XML-Dokument mit dem Namen "note_error.xml" zu laden.
  4. Wenn das zurückgegebene Dokument ein Fehlerdokument ist, den Fehler melden und die Funktion beenden.
  5. Wenn nicht, das XML-Dokument zurückgeben.

Weitere Erweiterungen