Easy-Micro

ESPACEMEMBRE ActionScript
Fichier XML

Lire un fichier XML avec ActionScript

En ActionScript 3, le chargement d'un fichier XML est réalisé grâce à la méthode load de l'objet URLLoader. Cette méthode prend un seul paramètre, qui correspond à une instance URLRequest. Une instance URLRequest contient toutes les informations d'une requête HTTP unique, telles que l'URL cible.

Contenu de moncarnet.xml

<?xml version="1.0" encoding="iso-8859-1" ?>
<carnet>
<personne sexe="M">
    <nom>Aubry</nom>
    <prenom>Christophe</prenom>
    <email>caubry@worldmac.com</email>
</personne>
<personne sexe="F">
    <nom>Rambault</nom>
    <prenom>Karine</prenom>
    <email>krambault@design.net</email>
</personne>
<personne sexe="F">
    <nom>Rapion</nom>
    <prenom>Anne</prenom>
    <email>arapion@mediaplus.org</email>
</personne>
<personne sexe="M">
    <nom>Chevalier</nom>
    <prenom>Jérôme</prenom>
    <email>jchevalier@sakhatan.com</email>
</personne>
<personne sexe="M">
    <nom>Mathon</nom>
    <prenom>Philippe</prenom>
    <email>pmathon@isasecurity.com</email>
</personne>
</carnet>
Source: Exemple issu du superbe Bases-as3.fr

Les données XML chargées ne sont disponibles à l'utilisation dans Flash que lorsque la totalité du fichier est chargé. Nous allons donc utiliser l'événement COMPLETE pour accèder aux données à la fin du chargement.

Charger un fichier XML (AS3)

// Déclaration d'un objet URLLoader
var chargementXML:URLLoader = new URLLoader();

// On stock l'url du fichier chargé dans une variable monfichier
var monfichier:URLRequest = new URLRequest("moncarnet.xml");

// Lorsque le fichier sera complètement chargé, on appel la fonction yesItIs
chargementXML.addEventListener(Event.COMPLETE, yesItIs);

// On lance le chargement du fichier XML avec la méthode load
chargementXML.load(monfichier);

Lire un fichier XML (AS3)

function yesItIs(pEvt:Event):void {

// On récupère notre xml via la classe XML qui est une classe native de Flash
// Le paramètre de type Event contient une propriété target dans laquelle est stocké
// l'objet associé à l'écouteur d'événements (l'objet URLLoader).
var mesadresses:XML = new XML(pEvt.target.data);

// Le document XML est constitué d'une liste d'éléments XML (ici, une liste de personnes)
var personnes:XMLList = mesadresses.elements();

// Pour chaque noeud enfants dans la liste des personnes
for each(var contact:XML in personnes)
{
// On utilise la syntaxe pointée pour accéder aux noeuds enfants d'un noeud XML
trace(contact.nom + " " + contact.prenom);
}

// Pour chaque noeud enfants dans la liste des personnes
for each(var contact:XML in personnes)
{
// On utilise la syntaxe pointée et l'arobase pour accéder aux attributs d'un objet XML
trace(contact.prenom+", de sexe "+contact.@sexe);
}

// Pour chaque noeud enfants dans la liste des personnes
for each(var contact:XML in personnes)
{
// On utilise les parenthèses pour filtrer un élément
trace(contact.(@sexe=="F").prenom);
}
// Permet de récupérer tous les descendants dont le nom est email
trace(personnes..email);

}
Source: Exemple issu du superbe Bases-as3.fr
Voir aussi un exemple sur le Site du Zero

Pour une sortie dans un champ de texte :
var easy_txt:TextField = new TextField();
easy_txt.width = 200;
easy_txt.multiline = true; // multiligne
easy_txt.wordWrap = true; // retour à la ligne automatique
easy_txt.border = true;
easy_txt.borderColor = 0xFF0000;
addChild(easy_txt);

for each(var contact:XML in personnes)
{
easy_txt.text += contact.nom + " " + contact.prenom + "\n";
}


< Page précédente ACTIONSCRIPT Page suivante >