ActionScript 3 – Programmation séquentielle et orientée objet
320
Connaître le nombre de nœuds enfants d’un nœud
La technique, bien qu’elle soit logique, n’est pas des plus évidentes.
Dans un premier temps, nous devons chercher à récupérer les nœuds enfants d’un nœud
précis avec la méthode children().
zoneAffichage.text = fichierXML.children();
Dans un deuxième temps, nous pouvons utiliser, de façon plus logique, la méthode length().
La ligne d’instruction ci-dessous, qui se trouve dans le fichier xml7.fla, permet de
connaître le nombre de nœuds enfants à la racine du document. Il y en a quatre.
zoneAffichage.text = fichierXML.children().length();
Déterminer le numéro d’index d’un nœud
Fichiers de référence de l’exemple 1 : Chapitre13/xml9.fla et Chapitre13/cinema.xml
Afin de comprendre très simplement et rapidement comment déterminer le numéro
d’index d’un nœud, examinons les exemples suivants.
Exemple 1
Nous connaissons un nom de film, mais nous souhaiterions connaître le nom de son réalisateur. Nous avons vu, dans les pages précédentes, qu’une recherche suffisait pour découvrir toutes les informations relatives à cette production, mais nous désirons connaître le
numéro de nœud, appelé aussi numéro d’index, afin d’utiliser la valeur obtenue.
var numeroNoeud:Number=fichierXML.Film.(@nom=="Mona Lisa Smile").childIndex();
zoneAffichage.text=fichierXML.Film[numeroNoeud].Realisateur;
Nous stockons dans une première variable, le numéro d’index du nœud dont la valeur de
l’attribut nom est Mona Lisa Smile. Nous utilisons ensuite la valeur obtenue comme paramètre pour pointer vers un nœud précis (Film[numeroNoeud]).
Exemple 2
Le fichier france.xml contient 22 nœuds à la racine (car il y a 22 régions françaises) qui
regroupent des nœuds enfants dont les noms de balises sont Departement. Nous souhaiterions savoir quel est le nom du département qui porte le numéro 28. Voici la ligne
d’instruction correspondante :
fichierXML.Region.Departement.(@numero==28).@nom;
Remarque
Pour connaître le nombre d’attributs contenus dans une balise, il suffit de les stocker dans une instance de
la classe XMLList() puis de les compter avec la propriété length().
Précédent

- 348/426

Suivant