Utilisation du format XML dans FLASH

Bolo Michelin

Cet article vous expliquera comment utiliser un document XML dans Flash. ♪

- Titre : Utilisation du format XML dans FLASH

- Auteur : Bolo Michelin

- Parution : 21 mai 2004

- Mise à jour : 23 avril 2013

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2013 Bolo Michelin. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. XML:base 1

- I-A. Commandes

- I-B. Application

- I-C. Aller plus loin

- II. XML et Base de données (ASP)

- III. XPath

- III-A. Commandes

- III-B. Application

- IV. Remerciements

I - XML:base 1

Ce premier article vous apprendra les bases de la manipulation d'un document XML. Je vous invite à visiter la section XML.Pour toutes questions sur ce tutoriel.

I-A - Commandes

Pour charger des données XML, il faut créer un objet XML. Dans le dictionnaire A.S (Action Script) vous pourrez voir toutes les propriétés de l'objet XML. Dans cet article nous utiliserons ces commandes pour charger le document XML : XML.getBytesLoaded, XML.getBytesTotal, XML.load.
XML.getBytesLoaded
XML.getBytesLoaded renvoie le nombre d'octets chargés pour le document XML
Minimum
flash player 6
Syntaxe

monCodeXML.getBytesLoaded()

Exemple

document.getBytesLoaded()

XML.getBytesTotal
XML.getBytesTotal renvoie la taille, en octets, du document XML spécifié.
Minimum
flash player 6
Syntaxe

monCodeXML.getBytesTotal()

Exemple

document.getBytesTotal()

XML.load
XML.load charge un document XML depuis l'URL.
Minimum
flash player 5
Syntaxe

monCodeXML.load(url)

Exemple

document = new XML()

document.load("monXML.xml")

Pour récupérer les données nous utiliserons XML.attributes.
XML.attribut
XML.attributes renvoie un tableau associatif contenant tous les attributs de l'objet XML spécifié.
Minimum
flash player 5
Syntaxe

monCodeXML.attributes

Exemple

document = new XML()

document.load("monXML.xml")

trace(document.firstChild.childNodes[1].attributes.nom)

I-B - Application

On crée un document XML.

<?xml version="1.0" ?>

<root>

<nouvelle numero="3" date="17/12/2003" />

</root>

On charge le document XML.

document= new XML(); //création de l'objet XML

document.ignoreWhite=true; //ignorer les sauts de ligne

document.load("essai.xml"); //charge le document

Pour récupérer le numéro et la date de la nouvelle, on fait ainsi :

document.firstChild.childNodes[0].attributes.numero

document.firstChild.childNodes[0].attributes.date

Manipulation d'un document XML : Combien y a-t-il de nouvelles ?

document.firstChild.childNodes.length

Quel est la date de la nouvelle numéro 1 ?

document.firstChild.childNodes[0].attributes.date

I-C - Aller plus loin

Le code ci-dessous explique comment précharger des données XML. Nous préchargeons les données du document XML.

_root.document=new XML(); //création de l'objet XML
_root.document.ignoreWhite=true;// les espaces vides sont supprimés
_root.document.load("monXMl.xml");//chargement du document XML
_root.stop();
_root.document.onLoad=function(){ //quand le chargement du document est terminé , lancement de l'animation
trace(this.firstChild.childNodes[0].attributes.texte);
_root.play();
}

II - XML et Base de données (ASP)

La création d'un document XML à la volée est assez simple. Dans la page ASP nous réalisons une requête qui sélectionne toutes les news. Après nous les éditons en les formatant comme un fichier XML. Dans l'exemple ci-dessous, nous créons un document XML de cette forme.

<?xml version="1.0" ?>

<root>

<nouvelle date="10/02/2003"  texte=" teste 1"/>

</root>

Voici le code de la page ASP::

<@ CodePage=65001 Language="VBScript">
<%
'connexion à la base de données
Set oC = Server.CreateObject("ADODB.Connection")
oC.Provider = "Microsoft.Jet.OLEDB.4.0"
oC.Open "Data Source=" & Server.MapPath("../../databases/ind.mdb")
'sélectionne toute les nouvelles
SQL ="SELECT * FROM news order by date DESC"

'création du Recordset
Set oRS = CreateObject("ADODB.Recordset")
oRS.Open SQL,oC,3,3

'création du document XML
response.write("<?xml version="""1.0""" ?>")"
response.write(<root> )

' boucle pour collecter toutes les nouvelles
ors.movefirst
do while not ors.eof
response.Write("<nouvelle date=""" & ors("date") & """ texte=""" & ors("texte") & """ />" )
ors.movenext
Loop

'on ferme le document XML
response.write("</root> ")

'on ferme la connexion à la bdd
Set oRS = Nothing
oC.Close
Set oC = Nothing
%>

III - XPath

Flash MX 2004 introduit une nouvelle classe XPathAPI. Celle-ci vous permettra de faire des recherches simples avec Xpath dans Flash.

III-A - Commandes

La classe de XPathAPI n'est pas une classe construite dans le Flash Player 7. Celle-ci se trouve dans une librairie spéciale appelée DataBindingClasses. Avant de voir un cas concret, voyons toutes les expressions supportées par Flash.

<employees>

<person gender="m">Matt</person>

<person gender="f">Heather</person>

<person gender="m">Tucker</person>

<person gender="f">Apple</person>

<person gender="m">Nate</person>

</employees>

Pour accéder au nœud personne, on peut soit utiliser un chemin absolu
/employees/person
soit un chemin relatif person si le nœud courant est <employees>.
On peut également utiliser les wildcard (*). Par exemple avec notre fichier:
le chemin « /*/person » recherche tous les éléments <person> indépendamment du nœud parent.
L'opérateur = est supporté également. Ce chemin nous ressort tous les employés qui sont des femmes « /employees/person[@gender='f'] ».
Ce chemin « /employees/person[@gender='f' and @age='30 '] » ressort tous les employés qui sont des femmes et qui ont 30 ans.
Les opérateurs suivants ne sont pas supportés par Flash: « < », « > », « // ».

III-B - Application

<employees>

<person gender="m">Matt</person>

<person gender="f">Heather</person>

<person gender="m">Tucker</person>

<person gender="f">Apple</person>

<person gender="m">Nate</person>

</employees>

Dans notre nouveau document, nous allons importer la librairie DataBindingClasses

1. Ouvrir : Fenêtre/Autres panneaux/Bibliothèques communes/Classes ;

2. Sélectionnez la bibliothèque DataBindingClasses et glissez-la dans la bibiothèque de votre animation ;

3. Sur la première Frame de votre animation tapez : import mx.xpath.XPathAPI;. Cette ligne permet d'importer la classe XpathApi dans Flash.

Maintenant que notre classe est importée dans notre animation, nous allons créer notre interface.

1. Placer deux boutons : un pour les hommes(bnt_H) et un pour les femmes (bnt_F) ;

2. Placer un textarea (txt_pesonne) et dans l'option HTML mettez « true ».

La fonction Remplir ajoute les valeurs du tableau dans le textarea

function Remplir (texte){
/* on supprime le contenu du textarea*/
txt_pesonne.text  =""
/* on ajoute chaque personne au textarea*/
for (var i = 0; i < texte.length; i++) {
txt_pesonne.text+=texte[i];
}
}

Puis nous chargeons notre fichier XML et nous ajoutons tous les noms

myXML = new XML()

myXML.ignoreWhite = true;

myXML.onLoad = function(success) {

if(success){

/* definit le chemin*/

var chemin = "/employees/person"

/* on récupère toutes les personnes*/

var personNoeud = mx.xpath.XPathAPI.selectNodeList(this.firstChild,chemin);

/* on remplit le textarea */

Remplir (personNoeud )

}

}

myXML.load("xpath.xml")

Le bouton bnt_F affichera le nom des femmes.

bnt_F.onPress = function () {
var chemin = "/employees/person[@gender='f']";
var personNoeud = mx.xpath.XPathAPI.selectNodeList(myXML.firstChild,chemin);
/* on ajoute chaque personne au textarea*/
Remplir (personNoeud )
}

Le bouton bnt_H affiche lui le nom tous les hommes

bnt_H.onPress = function () {
var chemin = "/employees/person[@gender='m']";
var personNoeud = mx.xpath.XPathAPI.selectNodeList(myXML.firstChild,chemin);
/* on ajoute chaque personne au textarea*/
Remplir (personNoeud )
}

Télécharger le zip contenant le fichier XML et le fla.

IV - Remerciements

Chaleureux remerciements à Developpez.com et plus particulièrement à Jérôme et Alacazam .