Modification de l'attribut d'un XML
#1
Posté 09 janvier 2012 - 03:04
Je cherche en AS3 à modifier le contenu d'un XML
voici la structure de mon fichier XML une fois loader
<list nomdossier="mesfilms">
<Film NomChemin="C:\monfilm.flv" Titre="Mon film de test" />
<Film HauteurImage="1024" LargeurImage="768"/>
<Film Titre="Film Presentation Legrand"/>
</list>
Je cherche par le code à modifier la valeur de l'attribut "NomChemin" avec par exemple "C:\monautrefilm.flv"
de sorte à retrouver la structure d'xml suivante
<list nomdossier="mesfilms">
<Film NomChemin="C:\monautrefilm.flv" Titre="Mon film de test" />
<Film HauteurImage="1024" LargeurImage="768"/>
<Film Titre="Film Presentation Legrand"/>
</list>
function onCompleteChargement(event:Event) {
FilmXMLListe = new XML(DonneesFilm.data);
var CheminFilm:String = FilmXMLListe.Film.@NomChemin;
trace(CheminFilm);
FilmXMLListe.Film.@Nom = "monautrefilm.flv";
}
la ligne "FilmXMLListe.Film.@Nom = "monautrefilm.flv";" me génère une erreur et et n'affecte pas la valeur demandé
à la structure xml.
erreur => "TypeError: Error #1089: L'affectation à des listes composées de plus d'un élément n'est pas prise en charge."
Pourtant j'ai trouvé plusieurs tuto qui étaient tous dans ce sens mais je n'arrive pas a faire quoi que ce soit.
Si vous avez une piste pour m'aiguiller je suis preneur
Merci d'avance
Cordialement
#2
Posté 09 janvier 2012 - 03:08
Hello,
je ne vois aucun attribut "Nom" dans ton XML
Valar morghulis
#3
Posté 10 janvier 2012 - 06:33
Effectivement il faut lire "FilmXMLListe.Film.@NomChemin = "monautrefilm.flv", mais ce n'est pas ce qui génère l'erreur !
d'avance merci
#4
Posté 13 janvier 2012 - 10:10
Je ne sais pas si je suis sur le bon forum !! car il n'y à pas de réponse ni de piste pour mon problème.....
Flash est-il en perte de vitesse chez les développeurs ????
ou a t-il un avenir sombre avec la venu du HTML5 ???
Dans tout les cas la persévérance et le meilleur des alliés, mais à quel prix........
Étant plutôt partageur je pense à ceux qui ont eu la même interrogation ou similaire.
Donc voici une partie de la réponse......
en fait il faut écrire :
FilmXMLListe.Film[0].@NomChemin= "monautrefilm.flv";
le[0] n'est autre que le numero de ligne de balise <Film
Exemple
-------------------------------------------------------------
<Film NomChemin="C:\monfilm.flv" Titre="Mon film de test" />
<Film HauteurImage="1024" LargeurImage="768"/>
<Film Titre="Film Presentation Legrand"/>
-------------------------------------------------------------
Pour modifier par exemple la "largeurImage" (2éme ligne balise Film) il faut faire
FilmXMLListe.Film[1].@LargeurImage= "500"; (L'incrément de ligne commence à Zéro)
etc .... etc ....
Si une autre Balise existe dans le même fichier XML il faut faire de même avec la nouvelle balise exemple :
FilmXMLListe.AutreBalise[0].@TOTO = "donne";
Par contre je n'ai pas trouvé pour récupérer le numéro de la ligne à partir de l'information "FilmXMLListe.Film.@NomChemin" par exemple .....
Si quelqu'un à une piste .... Sinon je ne manquerais pas de vous le faire savoir
Bon Flash à tous
#5
Posté 13 janvier 2012 - 12:54
donc comme pour un tableau tu fais tab[0] etc...
donc il est normal de faire FilmXMLListe.Film[0].
si tu fais FilmXMLListe.Film.length() tu obtiens 3
je vois pas l'intérêt de récupérer l'index mais tu peux utiliser ca:
<Film NomChemin="C:\monfilm.flv" Titre="Mon film de test" />
<Film HauteurImage="1024" LargeurImage="768"/>
<Film Titre="Film Presentation Legrand"/>
</list>;
trace(doc.Film.@NomChemin);
trace(hasAttribute('NomChemin', doc.Film));
function hasAttribute(name:String, xml:XMLList):Number{
for(var i:uint = 0; i < xml.length(); i++){
if ("@"+name in xml[i]){
return i;
break;
}
}
return -1;
}
sinon pour tes autres remarques, les forums de ne se sont jamais aussi bien portés au dire des administrateurs.
peut être faut-il te remettre en question ?
ton premier message est un pâté illisible, ton code n'est même pas dans une "balise code", beaucoup de personnes penseront que tu ne fais pas d'effort et ne se donneront même pas la peine de te lire et donc de te répondre.
de plus, tout le monde ne connait pas tout sur cette technologie, ton XML est formé n'importe comment et n'est pas standard, ça va que Flash est souple de ce coté là , ce serait sur d'autres technologies, tu ne pourrais même pas le charger.
sinon je serais bien curieux de te voir parcourir du XML en HTML5 pur
Modifié par Badwolf, 13 janvier 2012 - 12:55 .
Valar morghulis
#6
Posté 14 janvier 2012 - 10:14
Merci de ta réponse "Badwolf", et pour la solution apportée.
Mon xml n'est peut-être pas "catholique" pourtant je me suis inspiré d'un code existant sur ce forum .
Quelle est donc la bonne syntaxe d'xml ???
Bien heureux que les forums flash et flash lui même ne soit pas en perte de vitesse, car pour moi c'est un outils formidable avec des ressources infinies. Pour ma part je l'utilise plus en tant qu'applicatif et il me convient parfaitement. Mon inquiétude était justement qu'il ne soit supplanté par autre chose.
Désolé si ma demande est mal formulé, mais je ne suis pas un pro des forums...
Cordialement
1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)









