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

Flash Discussion :

[FLASH 8] XML et Flash - Problème de ChildNodes


Sujet :

Flash

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Points : 29
    Points
    29
    Par défaut [FLASH 8] XML et Flash - Problème de ChildNodes
    Bonjour.

    Je suis débutant sous Flash. J'essaie de créer un application qui va rapatrier des données d'une base de données MySQL vers Flash en passant par XML.

    Voila mon fichier xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <liste_articles>
    	<row id="1">
    		<column="Name">black shirt</column>
    		<column="Category">teeshirt</column>
    		<column="File">/images/teeshirt/black.jpg</column>
    	</row>
    </liste_articles>
    Mon code AS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    donnees_xml = new XML();
    donnees_xml.ignoreWhite = true; 
    donnees_xml.load('liste_articles.xml');
    donnees_xml.onLoad = function(ok) {
    	if (ok) {
    	var i=0;
    	var childItems:Array = donnees_xml.firstChild.childNodes;
         	 _root.texte.text = childItems.length;
            while (i < childItems.length){
    		_root.texte.text += childItems[i].firstChild.firstChild.nodeValue + "\n";
    	  	i++;
    		}
    }
    }
    Résultat : je récupère bien la variable blackshirt, précédé de la quantité d'articles... Par contre je n'arrive pas à afficher la catégorie contenu dans la balise <column ="Category"> ... Quelqu'un aurait il une idée ???

    Autre chose, est il possible que Flash m'affiche uniquement les catégories sans doublons, même si ils sont en doublons dans le fichier XML ??? Ou dois je créer un autre fichier XML avec uniquement les catégories par DISTINCT dans MySQL???

    Merci d'avance pour votre aide ![/code]

  2. #2
    Membre émérite Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Points : 2 338
    Points
    2 338
    Par défaut
    bonjour,
    pour le deuxième question il est préférable de faire ton traitement en SQL pour éviter les doublons et générer un fichier XML conforme à tes attentes, sauf erreur actionScript n'a pas de fonction comparable à SQL il serait bête de les implémenter.
    Pour la deuxième question lorsque tu veux récupérer le nom d'une balise et nom la valeur du neoud lui même il faut utiliser la syntaxe suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .firstChild.firstChild.nodeName
    tiens nous au courant car il y a aussi des astuces coté XML
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    ok pour les doublons , je pense aussi que ce sera plus simple à partir de mysql.

    par contre je viens de de tester ton nodeName et résultat : il m'affiche NULL ...

    j'ai entendu parler d'une propriété SiblingNode ou quelque chose comme ca, mais je ne sais pas si cela peut m'aider, quelqu'un a-t-il plus de connaissance que moi sur ce sujet ?

    à vrai dire, il est difficile de trouver un tuto clair et complet qui reprenne les fonctions de base XML sous Flash !

  4. #4
    Membre émérite Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Points : 2 338
    Points
    2 338
    Par défaut
    hi,
    non, nextSibling c'est la méthode pour atteindre un "frère" dans ton arborescence XML.
    Essaye directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _root.texte.text = donnees_xml.firstChild.nodeName;
    coté XML perso j'aurai écrit quelque chose de beaucoup plus simple genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <article id="1" name="black shirt" category="teeshirt" file="...."/>
    <article id="2" name="red shirt" category="teeshirt" file="...."/>
    ...
    Par exemple pour récupérer la valeur de "name" il faut utiliser :
    Pour récupérer la valeur de "category":
    Tu noteras que tu n'as plus besoin d'une balise </article> puisque tu refermes immédiatement la balise />
    Liste, row et column sont des informations "fonctionnelles" inutiles. Tu n'as besoin d'une balise <list_articles> que si dans le même fichier XML tu as d'autres listes.

    j'espère être assez clair, hésite pas redemander des explications.
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    yep alors, j'ai changé la création de mon xml, en mettant tout en attribut comme tu me l'a dit :
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <liste_articles>
    	<article Id="1" Name="black shirt" Category="teeshirt" File="/images/teeshirt/black.jpg" />
    </liste_articles>
    Et mon fichier AS :
    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
     
    donnees_xml = new XML();
    donnees_xml.ignoreWhite = true; 
    donnees_xml.load('liste_articles.xml');
    donnees_xml.onLoad = function(ok) {
    	if (ok) {
    	var i=0;
    	_root.texte.text = donnees_xml.childNodes.length +" article trouvé \n";
            while (i < donnees_xml.childNodes.length){
    		_root.texte.text += donnees_xml.childNodes[i].attributes.category + "\n";
    	  	i++;
    		}
            }
    }
    stop();
    Mais bon j'arrive toujours pas à affiché ma catégorie... j'ai bien l'affichage d'un article trouvé mais undefined pour la seconde partie ! Aurais je fait une erreur ?

    Merci d'avance pour ton aide dom_dev ![/code]

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    Je viens de simplifier et revoir un peu mon code en espérant trouver mes erreurs mais rien...
    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
    xml = new XML();
    xml.ignoreWhite = true; 
     
    xml.onLoad = function(ok) {
    	if (ok) {
    	var i=0;
    	_root.text1.text = xml.childNodes.length +" article trouvé \n";
    	trace(xml.childNodes);
    	for (var i = 0; i<xml.childNodes.length; i++) { 
          	var curItem = xml.childNodes[i] ; 
          	_root.text2.text += curItem.attributes.Name +"\n"; 
          	_root.text2.text += curItem.attributes.Category +"\n"; 
          	_root.text2.text += curItem.attributes.File +"\n"; 
         }
    }
    }
     
    xml.load('liste_articles.xml');
     
    stop();
    Et toujours 3 undefined dans text2, alors qu'il me trouve bien mon article et que lorsque je fais trace(xml), j'obtiens bien mon fichier xml !!!

    Je ne comprends plus du tout là !!!

  7. #7
    Membre émérite Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Points : 2 338
    Points
    2 338
    Par défaut
    hi,
    il y a 2 erreurs dans ton code, une petite et une grande, la petite c'est qu'il manque une majuscule à "Category". et la seconde c'est qu'on ne peut pas travailler avec un indice sur une arborescence XML. Il faut donc convertir ta liste d'articles en tableau et cela donne ça:
    coté XML j'ai rajouté quelques articles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <liste_articles> 
       <article Id="1" Name="black shirt" Category="teeshirt" File="/images/teeshirt/black.jpg" />
       <article Id="2" Name="black shirt" Category="truc" File="/images/teeshirt/black.jpg" />
       <article Id="3" Name="black shirt" Category="machin" File="/images/teeshirt/black.jpg" /> 
    </liste_articles>
    et coté flash
    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
     
    System.useCodepage = true;
    donnees_xml = new XML(); 
    donnees_xml.ignoreWhite = true; 
    donnees_xml.load('liste_articles.xml'); 
    donnees_xml.onLoad = function(ok) { 
    	if (ok) { 
    		var i=0; 
    		articlesTab = _root.donnees_xml.firstChild.childNodes;
    		_root.texte.text = articlesTab.length +" article trouvé \n";
            while (i < articlesTab.length){ 
    			_root.texte.text += articlesTab[i].attributes.Category + "\n";
    			i++; 
    		} 
    	} 
    } 
    stop();

    plus d'infos ??
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    Oki merci beaucoup !!!!!

    Je galère depuis quelques jours sur cette interfacage flash/XML, alors je vais mettre avec grand plaisir, le tag Résolu !!!!

    Si j'ai bien compris, Flash ne peut pas travailler directement sur le XML, et il vaut mieux toujours passer par un tableau temporaire ???

    Merci de ton aide dom_dev, surtout que celle ci a été rapide et réactive !

    Vive developpez.net/forums

  9. #9
    Membre émérite Avatar de dom_dev
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 073
    Points : 2 338
    Points
    2 338
    Par défaut
    hi,

    Si bien sur flash peux très bien travailler directement au niveau du XML mais avec les primitives xml (firstChild, nextSibling, childNodes etc...) mais dès qu'on veut faire un parcours classique avec un indice il faut utiliser une table, par contre toujours faire attention à se qu'on récupère dans la table.
    Ca fait plaisir de pouvoir aider, mais hélas je n'y arrive pas tout le temps d'autant que le forum ne manque de problèmes difficiles à résoudre.
    bon courage.
    Si la ou les réponses obtenues vous ont donné satisfaction n'oublier pas ->
    Et ne rajoutez pas de nouvelles questions éternellement dans le même post surtout si vous en n'êtes pas l'auteur
    MERCI

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

Discussions similaires

  1. problème sur la galerie dynamique flash php xml
    Par poliakov27 dans le forum Flash
    Réponses: 3
    Dernier message: 16/02/2009, 15h15
  2. Flash et Xml problème d'eploitation des données
    Par knoxville dans le forum Flash
    Réponses: 6
    Dernier message: 27/10/2008, 17h16
  3. Réponses: 3
    Dernier message: 15/02/2008, 18h19
  4. Réponses: 2
    Dernier message: 05/03/2007, 14h21
  5. [FLASH 8] [XML] Problème avec XML.load() asynchrone
    Par SSJ17Vegeta dans le forum Flash
    Réponses: 1
    Dernier message: 20/01/2006, 18h47

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