Forums Développement Multimédia

Aller au contenu

Editer un xml

CODE Actionscript

7 réponses à ce sujet

#1 Krevare

    Ceinture Noire

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 923 messages

Posté 08 December 2011 - 20:41 PM

Bonsoir à tous !

J'ai une question à propos de l'édition de fichier xml.

Je charge un xml qui contient les infos suivantes :


<?xml version="1.0" encoding="utf-8"?>
<contenu>
        <commentaire id="1">
                <temps>21</temps>      
                <pin>107</pin> 
                <numero>1</numero>
                <texte>Mon commentaire numero 1 </texte>
        </commentaire>
        <commentaire id="2">
                <temps>34</temps>      
                <pin>131</pin> 
                <numero>2</numero>
                <texte>Mon commentaire numero 2 </texte>
        </commentaire>
        <commentaire id="3">
                <temps>51</temps>      
                <pin>163</pin> 
                <numero>3</numero>
                <texte>Mon commentaire numero 3 </texte>
        </commentaire>
</contenu>


En gros ce sont trois commentaires. Dans mon flash, je peux créer et écrire des commentaires supplémentaires.
En revanche je séche sur la manière d'enregistrer ces nouveaux commentaires.

Je sais qu'il faut passer par du php et cette partie la à la rigueur je m'en sors.

La ou je bloque c'est sur la mise en forme de mon XML.
Comment ajouter un commentaire avec les mêmes balises etc ?

J'espère être clair, n'hésitez pas à me poser des questions si besoin :)


Merci de votre aide,

Fred.

#2 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 09 December 2011 - 11:29 AM

Bonjour,

Il faut utiliser les classes XML et XMLList. Pour ajouter un nœud, il faut utiliser la méthode appendChild() et ce pour ajouter un noeud complexe ou un noeud texte. En admettant que ma variable data de type XML est le contenu XML chargé, pour ajouter un nœud :


//Création du noeud commentaire et ajout de l'attribut id
var node:XML = new XML("<commentaire />") ;
node.@id = "4" ;

//Ajout du noeud temps
var innerNode:XML = new XML("<temps/>") ;
innerNode.appendChild("47") ;
node.appendChild(innerNode) ;

//Ajout du noeud pin
innerNode = new XML("<pin/>") ;
innerNode.appendChild("145") ;
node.appendChild(innerNode) ;

//Ajout des autres noeuds
//...

//Ajout du noeud commentaire au XML data
data.appendChild(node) ;
 


#3 Krevare

    Ceinture Noire

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 923 messages

Posté 09 December 2011 - 11:32 AM

Merci beaucoup !

Je teste ca dès que je rentre chez moi et je vous donne des nouvelles ! :)

Merci encore !

Fred.

#4 Krevare

    Ceinture Noire

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 923 messages

Posté 09 December 2011 - 19:56 PM

Wouhou c'est parfait :)

Merci beaucoup, j'ai de quoi m'amuser pour un moment !

Bon week end !


Fred.

#5 DaveD

  • Members
  • PipPipPipPipPipPipPipPip
  • 2453 messages

Posté 11 December 2011 - 09:52 AM

Voir le messagedeuxsucres, le 09 December 2011 - 11:29 AM, dit :

Bonjour,

Il faut utiliser les classes XML et XMLList. Pour ajouter un nœud, il faut utiliser la méthode appendChild() et ce pour ajouter un noeud complexe ou un noeud texte. En admettant que ma variable data de type XML est le contenu XML chargé, pour ajouter un nœud :


//Création du noeud commentaire et ajout de l'attribut id
var node:XML = new XML("<commentaire />") ;
node.@id = "4" ;

//Ajout du noeud temps
var innerNode:XML = new XML("<temps/>") ;
innerNode.appendChild("47") ;
node.appendChild(innerNode) ;

//Ajout du noeud pin
innerNode = new XML("<pin/>") ;
innerNode.appendChild("145") ;
node.appendChild(innerNode) ;

//Ajout des autres noeuds
//...

//Ajout du noeud commentaire au XML data
data.appendChild(node) ;
 

Bonjour,

Je ne savais pas que c'etait possible effectivement c'est trés interressant
mais comment fait on pour supprimer / modifier un nœud ?

Merci pour votre aide

Bon week end

Modifié par DaveD, 11 December 2011 - 09:52 AM.


#6 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 12 December 2011 - 17:52 PM

Pour modifier un noeud, il suffit de l'appeler comme une propriété :
monXml.monNoeud = "nouvelle valeur" ;
ou pour les attributs :
monXml.@monAttribut = "nouvelle valeur" ;

Pour supprimer un noeud ou un attribut... aucune idée, je ne le fait jamais.

Une remarque : il est important d'utiliser la méthode appendChild pour ajouter un noeud, que ce soit un noeud texte ou un noeud complexe, car la méthode appendChild gère les XMLEntities.

Il est possible de faire :

var monContenu:String = "Contenu" ;
var monXml:XML = new XML("<test>" + monContenu + "</test>") ;
trace(monXml.toXMLString()) ; // <test>monContenu</test>
 

Mais si monContenu contient un caractère interdit (& ou < ou >), une exception sera levée. Alors que si l'on utilise la méthode appendChild, ces caractères seront automatiquement transformés en XMLEntities : &amp; ou &lt; ou &gt; :


var monContenu:String = "Contenu interdit & < > !" ;
var monXml:XML = new XML("<test />") ;
monXml.appendChild(monContenu) ;
trace(monXml.toXMLString()) ; // <test>Contenu interdit & < > !</test>
 

Il est possible d'initialiser un XML avec le littéral <>, sans faire new XML() (comme avec le littéral [] pour un tableau) :
var node:XML = <commentaire /> ;

La doc Adobe sur l'approche E4X pour le traitement des XML est très bien faite. Il y a plein de choses à apprendre.

#7 Billyben

    KlouChiPonshoñistäs

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 2597 messages

Posté 12 December 2011 - 18:45 PM

Salut, pour supprimer un noeud, il faut utiliser l'opérateur "delete" (faut le trouver celui-ci!!)

#8 deuxsucres

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 115 messages

Posté 13 December 2011 - 08:52 AM

OK, merci pour l'info. Et effectivement, faut le trouver.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)