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<?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>
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// 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);
}
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";
}
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";
}