Injecter une variable dans un CDATA et caractères spéciaux : chaud devant [Résolu]

Messages postés
4
Date d'inscription
mercredi 2 février 2005
Dernière intervention
17 janvier 2011
- - Dernière réponse : noptien
Messages postés
4
Date d'inscription
mercredi 2 février 2005
Dernière intervention
17 janvier 2011
- 17 janv. 2011 à 15:59
Bonjour,

Comme le précise le titre je cherche à injecter une variable de type String dans un CDATA, mais je rencontre des difficultés de conversion de caractères, notamment avec les <>. Voici un bout de code pour être plus clair.

// je récupère le contenu texte d'un noeud dans la variable quest ( String)
quest =  xsiAttribut.TEXTE

// J'injecte cette variable dans questtranslate (String)
questtranslate = "<\![CDATA[<html> <textformat leftmargin="0">"+quest+"</textformat> </html>]]>"

//..........//

var node_C_page_qcm_texte : XML  = 
<screen id="page_qcm_texte" author_id="#2010931015571">
<question id="question_activites" author_id="#2010931015576">
<content format="xhtml">{questtranslate}
</content>
</question>
</screen>

// Que je fasse un {questtranslate} ou un .replace les caractères <> deviennent des < et >, ce qui ne va pas du tout puisque dans un deuxième temps je vais enregistrer le résultat en local via Air.
node_C_page_qcm_texte.question.replace("content",questtranslate);

trace(node_C_page_qcm_texte);
// <![CDATA[<html><textformat leftmargin="0">Quelle est la fonction de cet appareil (tampon lisse)?</textformat></html>]]>


J'ai fouillé un peu sur le web, mais notre ami Thibaut n'évoque pas ce genre de cas. Y-a-il une solution ?

Merci pour votre aide.

Nopt
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
4
Date d'inscription
mercredi 2 février 2005
Dernière intervention
17 janvier 2011
3
Merci
Merci pour les réponses, j'ai fini par trouver.

une fonction qui va bien qui va convertir ma variable String en un object XML avec un beau CDATA devant.

function cdata(variable:String):XML
{
  var x:XML =  new XML('<![CDATA[' + variable + ']]>');
   return x;
}


Ensuite dans mon node XML, j'appelle directement la fonction

<content type="xhtml">{cdata(questtranslate)}</content>


Et j'obtiens un beau formatage.

trace(node_C_page_qcm_texte.question);
<content type="xhtml"><![CDATA[<html> <textformat leftmargin="0">Quelle est la fonction de cet appareil (tampon lisse)?</textformat> </html>]]></content>


Le lien suivant m'a mis aussi sur la piste
=242 http://code.google.com/p/as3-commons/source/browse/trunk/as3-commons-lang/src/main/actionscript/org/as3commons/lang/XMLUtils.as?r=242

Merci pour ton aide Peg.

@+

Nopt

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de noptien
Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Dernière intervention
4 septembre 2013
8
0
Merci
bonjour, pourquoi ne fais-tu pas simplement :

node_C_page_qcm_texte.question.content = questtranslate;


Peg'
Commenter la réponse de pegase31
Messages postés
4
Date d'inscription
mercredi 2 février 2005
Dernière intervention
17 janvier 2011
0
Merci

bonjour, pourquoi ne fais-tu pas simplement :
node_C_page_qcm_texte.question.content =  questtranslate;



Bonjour et merci pour ton aide.

Je pensais que 'content' était un mot réservé.

Mais cela ne résout pas mon souci. En plus je viens de tomber sur un truc bizarre.

si je fais un
trace(node_C_page_qcm_texte);


j'obtiens :

<content format="xhtml"><![CDATA[<html> <textformat leftmargin="0">Quelle est la fonction de cet appareil (tampon lisse)?</textformat> </html>]]></content>
  </question>


si je fais
trace(node_C_page_qcm_texte.question.content);


j'obtiens
<![CDATA[<html><textformat leftmargin ="0">Quelle est la fonction de cet appareil (tampon lisse)?</textformat></html>]]>


Dans un cas, j'ai une conversion et pas dans l'autre.

@+

Nopt
Commenter la réponse de noptien
Messages postés
6161
Date d'inscription
dimanche 21 décembre 2003
Dernière intervention
4 septembre 2013
8
0
Merci
alors crée ton noeud en mode CDATA et insert-le dans content.
Lis la doc de flash sur les XMLnodes pour plus d'infos.

Peg'
Commenter la réponse de pegase31
Messages postés
4
Date d'inscription
mercredi 2 février 2005
Dernière intervention
17 janvier 2011
0
Merci
J'avais oublié mais cela allait sans dire, j'ai changé la valeur de questtranslate en virant le balisage CDATA soit

questtranslate = "<html><textformat leftmargin="0">"+quest+"</textformat></html>"


Voila, cela sera plus clair pour ceux qui tomberait sur ce post.

@+

Nopt
Commenter la réponse de noptien

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.