IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 1 & ActionScript 2 Discussion :

récupérer des données XML sous forme de tableau


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut récupérer des données XML sous forme de tableau
    Bonjour
    J'ai plagié les tutoriels pour récupérer des paramètres écrits dans un fichier xml avec le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    var languageXML:XML = new XML();
    _global.masterArray= new Array();
    languageXML.ignoreWhite = true;
    languageXML.onLoad = function(success) 
    {
    	var currentLangNode:XMLNode = this.firstChild.firstChild;
    	var i:Number = 0; 
    	for (var childNode = currentLangNode; childNode != null; childNode = childNode.nextSibling, i++) 
    	{
    		var j:Number = 0; 
    		masterArray[i] = new Array();
    		masterArray[i][0] = childNode.nodeName;
    		trace(masterArray[i][0]);
    		j++;
    		for (var stringNode:XMLNode = childNode.firstChild; stringNode != null; stringNode = stringNode.nextSibling, j++) 
    		{
    			masterArray[i][j] = stringNode.firstChild.nodeValue;
    			trace(masterArray[i][j]);
    		}
    	}
    }
    languageXML.load("appreciations.xml");
    Les différents éléments du fichier xml s'affichent bien via les fonctions trace.
    J'ai inséré au calque suivant la fonction trace suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    stop();
    trace("Retour:"+masterArray[0][1]);
    et là je récupère toujours : "Retour : undefined".
    D'avance merci à qui pourrait m'aider.
    (je voudrais afficher le contenu du fichier xml dans plusieurs zones de texte dispersées dans les différents calques du fichier fla)

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Salut,

    tu peux essayer de tracer le tableau entier pour savoir si c'est un problème de récupération des données ou d'accès à ta variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trace("Données :" + _global.masterArray);

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 200
    Points : 165
    Points
    165
    Par défaut
    Salut,
    Je pense vraiment que le code du deuxième calque est atteint avant que le XML ne soit chargé. Dans ce cas le undefined est tout à fait normal.
    Si vous avez votre réponse n'oubliez pas !

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Domaine de visibilité du tableau
    Effectivement le tableau n'est visible qu'à l'intérieur de la fonction onLoad (et à ce niveau je n'ai pas de soucis pour l'afficher avec trace).
    Effectivement aussi, le deuxième calque se lit avant que le fichier XML soit effectivement chargé : j'ai bien essayé de mettre une condition sur la variable "success" en bas de premier calque pour passer au suivant mais cela ne fonctionne pas mieux.
    Pourrait-on utiliser un lecteur d'événement qui pourrait détecter quand le fichier est effectivement chargé ? (mais là je n'y connais rien du tout)
    D'avance merci pour les conseils

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 200
    Points : 165
    Points
    165
    Par défaut
    Un lecteur d'événement est une bonne idée... que tu as déja mise en place avec ton "languageXML.onLoad" Le succes indique simplement si tous c'est bien passé. C'est donc à la fin de ce onLoad que tu vas appeler une fonction qui se chargera de traiter ton tableau.
    Si vous avez votre réponse n'oubliez pas !

  6. #6
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    d'ailleurs il faudrai rajouter le test de la variable success dans la fonction onLoad.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    languageXML.onLoad = function(success) 
    {
        if(success)
        {
        var currentLangNode:XMLNode = this.firstChild.firstChild;
        var i:Number = 0; 
        for (var childNode = currentLangNode; childNode != null; childNode = childNode.nextSibling, i++) 
        {
            var j:Number = 0; 
            masterArray[i] = new Array();
            masterArray[i][0] = childNode.nodeName;
            trace(masterArray[i][0]);
            j++;
            for (var stringNode:XMLNode = childNode.firstChild; stringNode != null; stringNode = stringNode.nextSibling, j++) 
            {
                masterArray[i][j] = stringNode.firstChild.nodeValue;
                trace(masterArray[i][j]);
            }
        }
        }
    }

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut XML et tableaux
    Merci pour ces conseils mais le fait de rajouter le if (success) ne change rien au problème.
    Par contre, je ne vois pas bien quel type de fonction rajouter pour récupérer le tableau. (j'avais même créé une classe pour charger le fichier mais j'avais exactement le mème problème).
    Donc je suis toujours à la recherche d'un système qui empècherait le programme de passer au calque suivant tant que le tableau n'est pas chargée.
    D'avance merci

  8. #8
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Salut,

    Citation Envoyé par ar vuzhugenn
    Donc je suis toujours à la recherche d'un système qui empècherait le programme de passer au calque suivant tant que le tableau n'est pas chargée.
    il te suffit d'utiliser la fonction stop au moment où tu lances le chargement (fin de la première frame)
    puis la fonction play lorsque le tableau est chargé (fin du onLoad)

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut çà marche merci
    Merci beaucoup … c'était cela qui me manquait … le "play()" dans le onLoad.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Représentation des données sqlite sous forme de tableau HTML
    Par boulamite dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/06/2008, 18h45
  2. comment récupérer des données MATLAB sous delphi
    Par redhammd dans le forum Bases de données
    Réponses: 1
    Dernier message: 04/06/2007, 16h01
  3. fonction pour récupérer des données xml
    Par jeff29 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2006, 15h46
  4. [xml]manipuler des données xml sous Oracle9i
    Par crazy dans le forum SQL
    Réponses: 7
    Dernier message: 28/02/2004, 11h40
  5. XSL pour visualiser arbre XML sous forme de tableau en HTML
    Par mattmat dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 28/03/2003, 10h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo