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

Résolu
noptien Messages postés 4 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 17 janvier 2011 - 17 janv. 2011 à 11:36
noptien Messages postés 4 Date d'inscription mercredi 2 février 2005 Statut Membre 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

5 réponses

noptien Messages postés 4 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 17 janvier 2011
17 janv. 2011 à 15:54
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
3
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
17 janv. 2011 à 13:15
bonjour, pourquoi ne fais-tu pas simplement :

node_C_page_qcm_texte.question.content = questtranslate;


Peg'
0
noptien Messages postés 4 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 17 janvier 2011
17 janv. 2011 à 13:39

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
0
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 11
17 janv. 2011 à 13:41
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'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
noptien Messages postés 4 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 17 janvier 2011
17 janv. 2011 à 15:59
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
0