TUTORIEL FLASH 
Flash MX 2004 : utilisation du composant XML Connector
Simplifiez-vous la gestion des données XML en reliant le composant XML Connector aux composants DataSet et DataGrid. (11/03/2005)
Les développeurs disposants de la version MX 2004 Professionnal de Flash ont accès à un nouveau composant facilitant grandement l'utilisation de fichiers XML au sein d'applications Flash : XML Connector. Celui-ci se propose de remplacer en l'améliorant la classe XML() qui est utilisée depuis Flash 5, et qui mal configuré peut amener à de fréquentes erreurs de traitement.

XML Connector peut être présenté comme un enrobage de cette classe XML() dans un composant : les fonctionnalités sont globalement les mêmes, mais la facilité se trouve décuplée par le simple glisser-déposer du composant sur la scène, là où le développeur Flash devait faire appel à nombre de lignes ActionScript.
Le terme "Connector" indique qu'il sert à faire la liaison (donc à connecter entre eux) les autres composants utilisés par l'application et les données XML. La gestion des données XML, en lecture comme en écriture, se fait au travers d'une API de type RPC (Remote Procedure Protocol) implémentée dans le Flash Player.

Les méthodes
Le composant XML Connector fournit aux développeurs un bon nombre de paramètres pour qu'il puisse le mettre en oeuvre correctement, accessibles via le panneau de propriétés de l'éditeur Flash (ou l'inspecteur de composant), ou en utilisant ActionScript. Ces paramètres sont URL, direction, ignoreWhite, multipleSimultaneousAllowed et suppressInvalidCalls.

URL contient l'adresse de la source XML.
direction indique le type d'opération à effectuer : send (envoi de données), sendAndLoad (envoi de données et réception d'un résultat) ou load (chargement de données).
ignoreWhite a la même signification que son homonyme au sein de XML() : il indique si les espaces blancs (whitespace) du fichier XML doivent être pris en compte (true) ou non (false).
multipleSimultaneousAllowed autorise ou non, selon sa valeur, l'exécution de plusieurs opérations en même temps.
suppressInvalidCalls, enfin, fait que le Flash Player annule ou non une opération lorsque celle-ci ne reçoit/envoi pas de données valides (non-XML).

Deux paramètres sont également accessibles par ActionScript, mais pas par l'interface de Flash : params sert à connaître/définir les paramètres à envoyer lors d'une opération en envoi (send ou sendAndLoad), results contient les données XML chargées après une opération de chargement (sendAndLoad ou load).

Associées à ces propriétés, le composant fournit également trois évènements, send, result et status, et une méthode, trigger(). Cette dernière est le point central du composant : c'est elle qui lance les opérations de liaisons entre le composant et les données XML, et entre les composants eux-mêmes. Elle se charge également de valider les données, et d'agir en conséquence.

L'évènement send est envoyé quand les données sont prêtes à être transmises ; status, quand l'opération est en cours de traitement ; result, quand une opération s'est correctement accomplie.

Créer une liaison
Comme nous l'avons dit, XML Connector trouve toute son utilité en combinaison avec les autres composants de données de Flash MX04Pro. En combinant le composant XML Connector avec d'autres, comme DataSet (pour créer des jeux de données) et DataGrid (pour afficher ces données dans un tableau), la mise en oeuvre d'applications faisant appel à des données XML externes devient très simple, et ne nécessite quasiment pas d'appel ActionScript. Voici un exemple permettant de lire un fichier RSS (donc, XML).

Dans un nouveau document Flash, glissez une occurrence des composants XML Connector, DataSet et DataGrid sur la scène, et nommez-les respectivement xmlc, dset et dgrd.

Il vous faut ensuite récupérer le schéma de votre fichier XML. Celui-ci peut-être généré directement par Flash à partir d'un fichier exemple (une version statique locale d'un fichier XML dynamique, au besoin). Le plus important est que le fichier d'exemple contienne au moins deux entrées là où le document a un potentiel de 1 à plusieurs entrées : Flash pourra ainsi déterminer où il doit s'attendre à des éléments récurrents, et agir en conséquence.
Le schéma se construit ainsi : sélectionnez xmlc, puis dans le panneau Inspecteur de composant ouvrez l'onglet Schéma. Sélectionnez "results: XML", car on indique ici les données en entrée, et cliquez sur le bouton sur la droite, nommé "Importer un schéma contenu dans un fichier XML". Sélectionnez dans la fenêtre qui s'ouvre votre fichier XML statique d'exemple, et Flash compose le schéma automatiquement.
Ceci fait, ouvre l'onglet Paramètres, pointez la propriété URL vers votre fichier XML, et modifier direction pour qu'elle affiche uniquement recieve.

XML Connector permet de récupérer les informations, mais pas de les traiter (hors validation). Nous avons besoin pour cela du composant DataSet, que nous allons lier à XML Connector ; plus précisément, nous allons lier la propriété dataProvider (qui indique la source des données a stocker) de DataSet, à la propriété results (recevant les données téléchargées) de XML Connector.

Sélectionnez donc dset, et dans son inspecteur ouvrez l'onglet Liaisons. Cliquez sur le +, et sélectionnez l'entrée dataProvider: array. De retour dans l'onglet Liaisons, double-cliquez sur bound to (en bas), sélectionnez notre xmlc, et dans results: XML, sélectionnez l'entrée item: Array. Ces items du fichier XML correspondent aux entrées du fichier RSS, ce que nous voulons afficher.

  Forum

Réagissez dans les forums de JDN Développeurs

Reste l'affichage : il nous faut maintenant lier, de la même manière, DataGrid à DataSet, ou plus précisément le dataProvider de DataGrid au dataProvider de dataSet. Passez à nouveau par la propriété bound to.

Enfin, il nous faut activer l'opération : dans l'image-clef du calque, placez l'appel suivant : xmlc.trigger();.

Si tout se passe bien, votre DataGrid devrait se remplir dès le lancement de l'animation...
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page
 
 





Quand achetez-vous le plus en ligne ?
Du lundi au vendredi
Le samedi
Le dimanche

Tous les sondages