Tutoriel XML DO...login
Tutoriel XML DOM
auteur:php.cn  temps de mise à jour:2022-04-13 15:27:56

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 :

  1. Chargez le fichier XML

  2. Vérifiez si le nom du nœud racine est "parsererror"

  3. Mettez la chaîne d'erreur Chargez la variable "errStr"

  4. 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 :

  1. La première ligne crée un objet document Microsoft XML vide.

  2. 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é.

  3. La troisième ligne indique à l'analyseur de charger un document XML nommé "note_error.xml".

  4. Si la propriété ErrorCode de l'objet parseError est différente de "0", alertez l'erreur et quittez la fonction.

  5. Si la propriété ErrorCode est "0", renvoie le document XML.

Exemple d'explication - Firefox :

  1. La première ligne crée un objet document XML vide.

  2. 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é.

  3. La troisième ligne indique à l'analyseur de charger un document XML nommé "note_error.xml".

  4. Si le document renvoyé est un document incorrect, alertez l'erreur et quittez la fonction.

  5. Sinon, renvoie le document XML.


Site Web PHP chinois