Accueil > Forum > > > > transformer xml en objet --> AS3
transformer xml en objet --> AS3
dimanche 7 juin 2009 à 15:06:06 |
transformer xml en objet --> AS3

inaden
|
Bonjour, avant toute chose, désolé pour ce long bout de code. J'essaie de créer des objets dans un tableau à partir d'un XML Le XML est de la forme : <client id="dasco"> <site identifiant="dasco1"> <titre letitre="Le site 1"> <etat>attente</etat> <adresse>13 rue du site 75010 Paris</adresse> <texte>dasco/texte/texte1.txt</texte> <carte>swf/plan1.swf</carte> <image1>dasco/image/img1.jpg</image1> <image2>dasco/image/img2.jpg</image2> <image3>dasco/image/img3.jpg</image3> <planint1>dasco/plan/plan1.jpg</planint1> <planint2>dasco/plan/plan2.jpg</planint2> </site> </client>Avec plusieurs sites. Le nombre des images n'est pas le même à chaque site, pas plus que le nombre de plan (planint) Je ne sais d'ailleurs pas s'il est préférable de différencier les balises images ou pas... c'est en quelques sorte une première question. Mon as est le suivant (tout du moins la partie relative au xml ): private function completeHandler(eventObj:Event):void { trace("lance XML !!!"); languageXML = new XML(eventObj.currentTarget.data); //trace("languageXML = "+languageXML);//renvoi le XML entier //définition du client --> permet normalement de définir les chantier dans l'animation client=languageXML.attributes(); //trace("client = "+client); var currentLangNode:XMLList = languageXML.children(); //trace("currentLangNode = "+currentLangNode);//--> BON :: Renvoie le XML dans root ou 6 avec .length() (nombre de noeuds) nbreSite=currentLangNode.length(); //trace("nombre de site = "+nbreSite); ///////////////////////////////////////////////////////////////////// Bon au dessus //trace("currentLangNode[0] = "+currentLangNode[0]);//--> renvoie les éléments du premier site var i:int = 0; var childNode:XML;// var node:XML; var j:int = 0; for each (childNode in currentLangNode) { // Création du tableau de base masterArray[i] = new Array(); // Utilisation du premier noeud masterArray[i][j]=new Object(); masterArray[i][j].name = childNode.attributes();// ----> renvoi l'identifiant du site trace("masterArray["+i+"]["+j+"] = "+masterArray[i][j]);
var nodeNode:XML; var k:int = 0; for each (node in childNode.children()) { trace("node.name = "+node.name());// renvoie le nom de la balise for each (nodeNode in node.children()) { trace("nodeNode = "+node.name()+" = "+nodeNode); //Créer l'object ici ??????? } } } trace("2. masterArray = "+masterArray); }Le XML est bien chargé, j'arrive à l'afficher en entier par une fonction trace, à trouver le nombre de sites... Mais je n'arrive pas créer un tableau qui contiendrait les éléments sites, chaque élément site étant un object qui contiendrait l'ensemble des données d'un site. Et ça fait des heures que je tourne en rond. Je ne sais plus par ou prendre le problème, d'autant plus que je ne suis pas une flèche en XML.  Si quelqu'un peut me donner une piste, un tuyau, me dire si je suis complètement à côté de la plaque... Merci d'avance pour votre attention et vos conseils. Denis Tout vient à qui sait attendre
|
|
dimanche 7 juin 2009 à 16:10:14 |
Re : transformer xml en objet --> AS3

inaden
|
Bon, j'essaie de faire évoluer ma boucle : for each (childNode in currentLangNode) { masterArray[i] = childNode.attributes(); trace("ddjfdhfdjhf = "+masterArray[i]); tableauSite[i]=new Object(); tableauSite[i].name=masterArray[i]; } Le trace ddjfd... donne ddjfdhfdjhf = dasco1 ddjfdhfdjhf = dasco2 ddjfdhfdjhf = dasco3 Ce qui me réjouit, mais si ensite je fais trace("tableauSite[0] = "+tableauSite[0]+" et son nom est : "+tableauSite[0].name); J'obtiens : tableauSite[0] = [object Object] et son nom est : dasco3 Ce qui ne m'arrange pas, puisque cela devrait être mon dasco1
Si quelqu'un n'est pas devant le tennis... et a une idée.
Tout vient à qui sait attendre
|
|
dimanche 7 juin 2009 à 19:22:03 |
Re : transformer xml en objet --> AS3

inaden
|
Bon, c'est laborieux, voilà ou j'en suis au niveau de ma (mes) boucle(s) : var childNode:XML; //for(var i:int=0; i<nbreSite; i++){ //trace("currentLangNode["+i+"] = "+currentLangNode[i]);//--> renvoie les éléments du premier site //} for each (childNode in currentLangNode) { masterArray.push(childNode.attributes()); }
trace("masterArray = "+masterArray); for(var i:int=0; i<nbreSite; i++){ masterArray[i] as Object; trace("masterArray["+i+"] = "+masterArray[i]); //vérification que les dacos sont bien des objets --- > ok //if(masterArray[i] is Object){ // trace("object"); // } // else{trace("pas object");} var node:XML; var nodeNode:XML; var k:int = 0; for each (node in childNode.children()) { trace("node.name = "+node.name());// renvoie le nom de la balise for each (nodeNode in node.children()) { trace("nodeNode = "+node.name()+" = "+nodeNode); } } }Ce qui fait que j'ai bien mes trois objects. J'ai aussi changer mon XML de tel sorte que tous les sites aient la même architecture quittes à ce que certaines balises soient vides (exemple en fin de message). Le problème est que j'aimerais maintenant remplis mes objets de chacune des différentes balises pour avoir un truc qui serait (pour aller avec l'exmeple) : dasco2={titre:"le deuxième site , etat:"attente", adresse:"24 rue du deuxième site 75010 Paris ....} Ce qui me donnerais au final : masterArray=[{le premier objet},{le second objet tel que défini ci-dessus}...] Si quelqu'un a une idée et que cette idée est bonne, il recevra un tonneau de pif ! <client id="dasco"> <site identifiant="dasco2"> <titre>Le deuxième titre</titre> <etat>attente</etat> <adresse>24 rue du deuxième site 75010 Paris</adresse> <texte>dasco/texte/texte1.txt</texte> <carte>swf/plan1.swf</carte> <image1>dasco/image/img4.jpg</image1> <image2>dasco/image/img5.jpg</image2> <image3></image3> <planint1>dasco/plan/plan3.jpg</planint1> <planint2></planint2> </site> ... les autres istes et </client>Tout vient à qui sait attendre
|
|
dimanche 7 juin 2009 à 20:08:24 |
Re : transformer xml en objet --> AS3

inaden
|
Réponse acceptée !
Bon je ne suis pas sur de l'élégance de la fonction... mais ELLE FONCTIONNE  private function completeHandler(eventObj:Event):void { trace("lance XML !!!"); languageXML = new XML(eventObj.currentTarget.data); //trace("languageXML = "+languageXML);//renvoi le XML entier //définition du client --> permet normalement de définir les chantier dans l'animation client=languageXML.attributes(); //trace("client = "+client); var currentLangNode:XMLList = languageXML.children(); //trace("currentLangNode = "+currentLangNode);//--> BON :: Renvoie le XML dans root ou 6 avec .length() (nombre de noeuds) nbreSite=currentLangNode.length(); //trace("nombre de site = "+nbreSite); ///////////////////////////////////////////////////////////////////// Bon au dessus for(var i:int=0; i<nbreSite; i++){ masterArray[i]={titre:languageXML.site[i].titre, etat:languageXML.site[i].etat, adresse:languageXML.site[i].adresse, texte:languageXML.site[i].texte, carte:languageXML.site[i].carte, image1:languageXML.site[i].image1, image2:languageXML.site[i].image2, image3:languageXML.site[i].image3, planint1:languageXML.site[i].planint1, planint2:languageXML.site[i].planint2}; } //les vérifs trace("masterArray = "+masterArray); trace("masterArray[1].texte = "+ masterArray[1].texte); } Par contre, si je ne peux pas avoir un XML où chaque "collection" est identique en forme à la suivante... je l'aurais dans le ...  Autrement dit, dans le fond le problème reste entier. Mais au moins, j'ai une base de travail ! Merci inaden pour ton aide ! Et que cela serve à d'autre ! Tout vient à qui sait attendre
|
|
dimanche 7 juin 2009 à 21:00:48 |
Re : transformer xml en objet --> AS3
|
lundi 8 juin 2009 à 08:57:29 |
Re : transformer xml en objet --> AS3

inaden
|
Salut Peg' et merci de ton soutiens. Voilà, le truc est que normalement je dois récupérer un xml comportant principalement des url et quelques champs textes a priori de la forme : <client id="dasco"> <site identifiant="dasco1"> <titre>"Le site 1"</titre> <etat>chantier</etat> <adresse>13 rue du site 75010 Paris</adresse> <texte>dasco/texte/texte1.txt</texte> <carte>plan/plan1.swf</carte> <image1>dasco/image/img1.jpg</image1> <image2>dasco/image/img2.jpg</image2> <image3>dasco/image/img3.jpg</image3> <planint1>dasco/plan/plan1.jpg</planint1> <planint2>dasco/plan/plan2.jpg</planint2> </site> Avec évidemment plusieurs sites. L'id client est important car il déterminera ce qui est visible dans l'animation (ce sont des plans autocad mis dans flash avec des chantiers et des données sur ces chantiers). Le "titre" et la "carte" me permettent de remplir un combobox. Les autres données permettent d'appeler des remarques, photos et plans lié au chantier. Dans mon idée, je voulais créer un tableau (peut-être qu'un vector serait mieux), comportant des objets, chaque objet étant un site. Normalement, le nombre d'image ou de plan n'est pas forcement le même pour chaque site, ce qui me pose aussi un problème que j'ai "résolu" en mettant des balises vides pour que chaque site ait le même nombre de balise. Comme c'est mon premier gros boulot en Flash (et que j'ai besoin de nuts !), il me fallait vite une solution pour pouvoir dire : c'est ok, je peux le faire. Après hésitation, j'ai décidé de le faire en as3 (il faut bien essayé d'évoluer), et pour le reste de l'interactivité, j'en suis bien content ! Enfin, pour la forme du XML, je peux demander à ce qu'il prenne une autre forme, si une autre forme est plus pratique. Voilà, j'espère être compréhensible. En tout cas, merci de ton aide.
Tout vient à qui sait attendre
|
|
lundi 8 juin 2009 à 15:58:24 |
Re : transformer xml en objet --> AS3
|
lundi 8 juin 2009 à 18:33:26 |
Re : transformer xml en objet --> AS3

inaden
|
Mais, ça m'a l'air très simple... c'est fou ! Bon, reste à mettre en chantier cette simplicité... Bon, j'essaie de mettre ça en pratique dès demain matin. Merci bien. Je te tiens au courant. Que ferions-nous sans toi ! Encore merci
Tout vient à qui sait attendre
|
|
mardi 9 juin 2009 à 08:13:27 |
Re : transformer xml en objet --> AS3

inaden
|
Salut, Comme je le suggérais... la simplicité une fois mise en chantier s'avère toujours moins simple. Deux problèmes : Ma fonction : private function completeHandler(eventObj:Event):void { trace("lance XML !!!"); languageXML = new XML(eventObj.currentTarget.data);
client=languageXML.@id; trace("client = "+client); //ça c'est ok trace("LanguageXML.@id = "+languageXML.@id); trace(languageXML.@id is String);*/// à moins que je m'abuse, j'ai un false ici var target:XMLList = languageXML.site.(@identifiant=="dasco1"); trace("target = "+target);//renvoie tout dasco1 trace("target.@identifiant = "+target.@identifiant);//renvoie dasco 1 trace("le titre de dasco1 est "+target.@titre);//ne renvoie rien à part le texte entre guillemets trace("le chantier de dasco1 est "+target.@chantier);//ne renvoie rien à part le texte entre guillemets }
Donc le problème est que target.@titre ne renvoie rien Et il faut, une fois que cela renverra quelque chose que je trouve un moyen de parcourir mon XML par une boucle (for each ???). Donc, si quelqu'un a une idée. Merci d'avance
Tout vient à qui sait attendre
|
|
mardi 9 juin 2009 à 11:25:37 |
Re : transformer xml en objet --> AS3
|
Cette discussion est classée dans : site, var, xml, trace, currentlangnode
Répondre à ce message
Sujets en rapport avec ce message
LocalConnect pas très bien compris [ par way2web ]
Bonsoir,J'ai créé deux fichiers swf différents insérés dans la même page html :1) le premier est une galerie de miniatures2) le deuxième est les photo
Conversion en nombre.. ? [ par Lyche ]
Bonjour.Je suis devant un problème un peu stupide, mais je ne trouve pas la solution, ni sur l'aide, ni sur les sites.J'ai vu la fonction : "Number(pa
width sur une variable xml récupérée ne fonctionne pas [ par cd59 ]
Bonjour, j'ai un SWF avec des champs de texte. Ces champs sont renseigné dans un xml.Ce qui marche : l'import dans flash des noms des champs de texte
Playlist XML pour petit lectur mp3 [ par Number10 ]
Bonjour à tous !Moi avoir souci...:-( J'ai créé un site entièrement en flash (version test ICI)dans lequel un calque est co
Recup flasvars PHP to flash [ par Ariranha ]
BonjourAprès de nombreuses recherches infructueuses, je me dirige vers vous pour "essayer" de trouver une solution.Je récupère à partir d'un fichier P
Graphiste désespérée pour finir son site web. :) [ par LYDRI ]
Excusez-moi, je débute ici et je me suis rendu compte qu'il faut écrire en html, raison pour laquelle je répète mon message. Merci pour la compréhens
probleme lors Creation d'une galerie avec Clip imbriqué sous as3 [ par martin8fr ]
var imageLoader:Loader;var xml:XML;var xmlList:XMLList;var xmlLoader:URLLoader = new URLLoader();var container:MovieClip;var cadre:Cadre = new Cadre()
faire un trace dans mon script :s [ par deuval ]
bonjour,jai fait un script qui me permet de charger des images grace un xml. Ces images sont misent dans le clip _root.cadrechargement. Sur la scene i
boucle et validation de données actionscript [ par fragger ]
Bonjour à tous,Voilà, je bloque sur ce code et je tourne en rond...Le script est celui d'un clip qui permet de vérifier ce qui a été saisi par l'utili
placer mes movieClip sur la scene [ par clem037 ]
Bonjour à tous, J'ai généré un fichier XML avec mon code AS2, ce code "trace" 3 images, et je voudrais que ces images s'affiche les unes à cotés des
Livres en rapport
|
Derniers Blogs
COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ?MYTIC - SHAREPOINT 2010 : DéJà UN MYTHE MICROSOFT ? par junarnoalg
La prochaine session de MyTIC aura lieu à Namur, le 23 mars prochain. Pendant presque une heure, nous parlerons de SharePoint 2010. Voici un aperçu du programme.
Accueil : 17h30 Début de la session : 18h00 - Les nouvelles int...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|