Erreur de l'analyseur DOM
XML DOM Erreur de l'analyseur
Lorsque Firefox rencontre une erreur d'analyseur, il charge un document XML contenant l'erreur.
Erreurs d'analyseur dans Firefox
Une erreur d'analyseur peut se produire lorsque vous essayez d'ouvrir un document XML.
Contrairement à Internet Explorer, si Firefox rencontre une erreur, il charge un document XML contenant une description de l'erreur.
Le nom du nœud racine du document d'erreur XML est "parsererror". Ceci est utilisé pour vérifier les erreurs.
Erreur XML
Dans le code suivant, nous demandons à l'analyseur de charger un document XML mal formé.
(Vous pouvez en savoir plus sur le XML bien formé et valide dans notre didacticiel XML.)
Exemple
<html> <body> <script> 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, "<"); document.write(errStr); } else { document.write("XML is valid"); } </script> </body> </html>
Exécuter l'instance»
Cliquez sur le bouton « Exécuter l'instance » pour afficher l'instance en ligne
Afficher le fichier XML : note_error.xml
Explication de l'instance :
Chargez le fichier XML
Vérifiez si le nom du nœud racine est "parsererror"
Mettez la chaîne d'erreur Chargez la variable "errStr"
Avant d'écrire la chaîne d'erreur en HTML, remplacez les caractères "<" par "<"
Remarque : En fait, seul Internet Explorer vérifiera votre XML avec une DTD, Firefox ne le fera pas.
Vérification des erreurs entre navigateurs
Ici, nous créons une fonction de chargement XML qui vérifie les erreurs d'analyseur dans Internet Explorer et Firefox :
Instance
<html> <head> <script> function loadXMLDocErr(dname) { try //Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.load(dname); if (xmlDoc.parseError.errorCode != 0) { alert("Error in line " + xmlDoc.parseError.line + " position " + xmlDoc.parseError.linePos + "\nError Code: " + xmlDoc.parseError.errorCode + "\nError Reason: " + xmlDoc.parseError.reason + "Error Line: " + 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); } </script> </head> <body> <script> xmlDoc=loadXMLDocErr("note_error.xml"); </script> </body> </html>
Exécuter l'instance»
Cliquez sur le bouton "Exécuter l'instance" pour afficher l'instance en ligne
Afficher le fichier XML : note_error.xml
Explication des exemples - Internet Explorer :
La première ligne crée un objet document Microsoft XML vide.
La deuxième ligne désactive le chargement asynchrone, garantissant que l'analyseur ne continue pas à exécuter le script jusqu'à ce que le document soit complètement chargé.
La troisième ligne indique à l'analyseur de charger un document XML nommé "note_error.xml".
Si la propriété ErrorCode de l'objet parseError est différente de "0", alertez l'erreur et quittez la fonction.
Si la propriété ErrorCode est "0", renvoie le document XML.
Exemple d'explication - Firefox :
La première ligne crée un objet document XML vide.
La deuxième ligne désactive le chargement asynchrone, garantissant que l'analyseur ne continue pas à exécuter le script jusqu'à ce que le document soit complètement chargé.
La troisième ligne indique à l'analyseur de charger un document XML nommé "note_error.xml".
Si le document renvoyé est un document incorrect, alertez l'erreur et quittez la fonction.
Sinon, renvoie le document XML.