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

Navigation dans le DOM


XML DOM - Nœud de navigation


Les nœuds peuvent être parcourus en utilisant les relations entre les nœuds.


Navigation dans les nœuds DOM

Accédez aux nœuds dans l'arborescence des nœuds via les relations entre les nœuds, généralement appelés « nœuds de navigation ».

Dans XML DOM, les relations entre nœuds sont définies comme des attributs de nœud :

  • parentNode

  • childNodes

  • premierEnfant

  • dernierEnfant

  • suivantSibling

  • précédentFrère

L'image suivante montre une section de l'arborescence des nœuds dans books.xml et illustre les relations entre les nœuds :

navigate (1).gif


DOM - Nœud parent

Tous les nœuds n'ont qu'un seul nœud parent. Le code suivant accède au nœud parent de <book> :

Instance

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js"> 
</script>
</head>
<body>

<script>
xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("book")[0];
document.write(x.parentNode.nodeName);
</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur Bouton "Exécuter l'exemple" pour afficher l'exemple en ligne

Explication de l'exemple :

  1. Utilisez loadXMLDoc() pour charger "books.xml" dans xmlDoc

  2. Obtenir le premier élément <book>

  3. Sortir le nom du nœud parent de "x"


Évitez les nœuds de texte vides

Firefox et certains autres navigateurs traitent les espaces vides ou les nouvelles lignes comme des nœuds de texte, contrairement à Internet Explorer.

Cela crée un problème lors de l'utilisation des propriétés suivantes : firstChild, lastChild, nextSibling, previousSibling.

Pour éviter de naviguer vers des nœuds de texte vides (espaces et nouvelles lignes entre les nœuds d'éléments), nous utilisons une fonction pour vérifier le type de nœud :

function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
​ {
​ y=y.nextSibling;
​ >
return y;
}

La fonction ci-dessus vous permet d'utiliser get_nextSibling(node) au lieu de la propriété node.nextSibling .

Explication du code :

Le type de nœud d'élément est 1. Si le nœud frère n'est pas un nœud d'élément, passez au nœud suivant jusqu'à ce que le nœud d'élément soit trouvé. De cette façon, vous pouvez obtenir les mêmes résultats dans Internet Explorer et Firefox.


Obtenir le premier élément enfant

Le code suivant affiche le premier élément du premier <book> :

Exemple

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_firstChild(n)
{
y=n.firstChild;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}
</script>
</head>

<body>
<script>
xmlDoc=loadXMLDoc("books.xml");

x=get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur le bouton « Exécuter l'instance » pour afficher l'instance en ligne

Explication des exemples :

  1. Utilisez loadXMLDoc() pour charger "books.xml" dans xmlDoc

  2. Dans le premier < la fonction get_firstChild sur l'élément book> pour obtenir le premier nœud enfant (appartenant au nœud élément)

  3. Sortez le nom du nœud du premier nœud enfant (appartenant au nœud élément)


tryitimg.gifPlus d'exemples

lastChild()
Cet exemple utilise lastChild() méthode et une Personnaliser la fonction pour obtenir le dernier nœud enfant du nœud

Instance

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_lastChild(n)
{
y=n.lastChild;
while (y.nodeType!=1)
  {
  y=y.previousSibling;
  }
return y;
}
</script>
</head>

<body>
<script>
xmlDoc=loadXMLDoc("books.xml");

x=get_lastChild(xmlDoc.getElementsByTagName("book")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur le bouton "Exécuter l'instance" " pour afficher l'instance en ligne


nextSibling()
Cet exemple utilise la méthode nextSibling() et une fonction personnalisée pour obtenir le nœud frère suivant du nœud

Instance

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_nextSibling(n)
{
y=n.nextSibling;
while (y.nodeType!=1)
  {
  y=y.nextSibling;
  }
return y;
}
</script>
</head>

<body>
<script>
xmlDoc=loadXMLDoc("books.xml");

x=get_nextSibling(xmlDoc.getElementsByTagName("title")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur le bouton "Exécuter l'instance" pour afficher l'instance en ligne


previousSibling()
Cet exemple utilise la méthode previousSibling() et une fonction personnalisée pour obtenir le nœud frère précédent du nœud

Instance

<!DOCTYPE html>
<html>
<head>
<script src="loadxmldoc.js">
</script>
<script>
//check if the first node is an element node
function get_previousSibling(n)
{
y=n.previousSibling;
while (y.nodeType!=1)
  {
  y=y.previousSibling;
  }
return y;
}
</script>
</head>

<body>
<script>
xmlDoc=loadXMLDoc("books.xml");

x=get_previousSibling(xmlDoc.getElementsByTagName("price")[0]);
document.write(x.nodeName);
</script>
</body>
</html>

Exécuter l'instance»

Cliquez sur le bouton « Exécuter l'instance » pour afficher l'instance en ligne

Site Web PHP chinois