Récupérer des valeurs dans un XML avec attribute de la forme val00,val01 val10,v

Résolu
cs_supergrey Messages postés 475 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 20 septembre 2010 - 17 juil. 2007 à 16:27
cs_supergrey Messages postés 475 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 20 septembre 2010 - 17 juil. 2007 à 21:23
Bonjour, je viens de me mettre aux fichiers XML avec actionscript, j'arrive a récuperer les noeuds qu'il me faut, la ou je bloque c'est que le noeuds qui minterresse ressemble a ca:
<groupval values="0.2,0.4 0.5,0.5 0.8,1.2"/>

C'est toujours présenté comme ca càd un nombre variable de groupes de 2 valeurs séparées par une virgule, qui eux sont séparés par un espace.
Comment je peux faire pour récupérer les valeurs ?

Merci.

3 réponses

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
17 juil. 2007 à 19:46
salut, tu devrais t'interesser à la méthode "split" de la Class "Array", tu y trouveras tout ce dont tu as besoin pour séparer les valeurs.
Attention, le résultat obtenu ne sera pas une série de nombres, mais de strings.

Peg'
Le dico est ton ami, n'hésite pas à abuser de lui !
3
cs_embalmer Messages postés 120 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 10 décembre 2007
17 juil. 2007 à 20:12
Slt,
C'est vraiment pas la meilleure façon d'utiliser du XML mais bon partant du principe que tu ne peux pas le modifie, voici comment je découperais ta chaine :

   var chaineC:String = tonFichierXml.firstChild.childNodes[n].attributes.values; // Là tu place le chemin exact vers ton attribut
    var comptValeur =1;
    var codeCarac:Number;
    var carac:String;
    for(i= 0;i<chaineC.length;i++){
        codeCarac = chaineC.charCodeAt(i);
        carac = chaineC.substr(i,1);
        if(codeCarac != 44 && codeCarac != 32){
            if(_root["valeur"+comptValeur] == undefined){
                _root["valeur"+comptValeur] = "";
            }
            _root["valeur"+comptValeur] += carac; 
        }else{
            comptValeur ++
        }
    }

// et pour vérifier tout ça :

     for(j =1;j<=comptValeur;j++){
         trace(_root["valeur"+j]);
     }
   

Voilà dans cet exemple tu te retrouvera avec des chaines nommées "valeur1", "valeur2"... contenant tes valeurs de tes attributs.

++
3
cs_supergrey Messages postés 475 Date d'inscription vendredi 27 juin 2003 Statut Membre Dernière intervention 20 septembre 2010
17 juil. 2007 à 21:23
J'ai choisi la méthode split je la trouve plus lisible, je sépare d'abord par les espace pour récupérer les groupes et ensuite avec les virgules pour récupérer les deux deux valeur du groupe.

Le fichier XML est créé par un logiciel de modélisation donc je dois faire avec, grace a ca je récupere les valeur x y z de chaque polygone...

Merci
0
Rejoignez-nous