Différences entre navigateurs XML DOM

Les navigateurs traitent différemment les nœuds de texte vide dans le DOM XML.

Exemple

Les exemples suivants utilisent les fichiers XML books.xml.

Fonction loadXMLDoc(), située à l'extérieur du JavaScript, est utilisée pour charger les fichiers XML.

Affichage de la longueur de la liste des nœuds
Cet exemple affiche la longueur de la liste des nœuds. Le résultat est différent dans IE et d'autres navigateurs.
Ignorer les espaces vides entre les nœuds
Dans cet exemple, nous vérifions le nodeType du nœud et ne traitons que les nœuds d'élément.

Différences entre les navigateurs dans l'analyse DOM

Tous les navigateurs modernes supportent la norme W3C DOM.

Cependant, il y a des différences entre les navigateurs. Les différences importantes sont deux :

  • Méthodes de chargement de l'XML
  • Méthodes de traitement des espaces et des retours chariots

Dans “Analyse XML DOM” Cette section, a déjà expliqué différentes méthodes de chargement de l'XML.

Dans cette section, nous allons expliquer différentes méthodes de traitement des espaces et des retours chariots.

DOM - Espaces et retours chariots

L'XML contient souvent des retours chariots ou des espaces entre les nœuds. C'est un cas fréquent lors de l'utilisation de simples éditeurs (comme le bloc-notes).

Les exemples suivants (édités dans un bloc-notes) contiennent des CR/LF entre chaque ligne et deux espaces avant chaque sous-nœud :

<book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

Firefox, ainsi que d'autres navigateurs, traitent les espaces blancs vides ou les retours chariots comme des nœuds de texte, tandis que Internet Explorer ne le fait pas ainsi.

Le code suivant montre combien de sous-nœuds possède l'élément racine (books.xml) :

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
document.write("Nombre de sous-nœuds: " + x.length);

Exemple d'explication :

  • En utilisant loadXMLDoc() Mettre "books.xml"Charger xmlDoc"
  • Obtenez les sous-nœuds de l'élément racine
  • Nombre de sous-nœuds affichés

Les résultats dépendent du navigateur utilisé. Firefox affiche 9, tandis que IE affiche 4.

TIY

Ignorer les espaces vides entre les nœuds

Pour ignorer les nœuds de texte vides entre les nœuds élémentaires, il faut vérifier le type de nœud. Le type de nœud des éléments est 1 :

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement.childNodes;
for (i=0;i<x.length;i++)
{ 
if (x[i].nodeType==1)
  {// ne traiter que les nœuds élémentaires 
  document.write(x[i].nodeName);
  document.write("<br />");
  } 
}

Exemple d'explication :

  • En utilisant loadXMLDoc() Mettre "books.xml"Charger xmlDoc"
  • Obtenez les sous-nœuds de l'élément racine
  • Vérifiez le type de nœud de chaque sous-nœud. Si le type de nœud est "1", il s'agit d'un nœud élémentaire

TIY (simple) Ou TIY (complet)