E4X Ajouter CDATA contenu
Essentiellement, j'ai besoin de définir un nom de nœud et de ses CDATA contenu à l'aide de variables.
var nodeName:String = "tag";
var nodeValue:String = "<non-escaped-content>";
Naïvement je pensais que ce serait le travail :
var xml:XML = <doc><{nodeName}><![CDATA[{nodeValue}]]></{nodeName}>
Sorties :
<doc><tag><![CDATA[{nodeValue}]]></tag></doc>
Dans une précédente version du script conçu pour FP9 j'ai contourné le problème en utilisant :
new XMLNode( XMLNodeType.XMLNodeType.CDATA_NODE, nodeValue ); //...
mais cela ne semble pas fonctionner dans FP10, et j'ai le sentiment que la méthode est en quelque sorte amorti toute façon.
Quelqu'un une solution élégante pour cela ?
de réponses mis à jour ... greetz
OriginalL'auteur Theo.T | 2009-08-06
Vous devez vous connecter pour publier un commentaire.
comment à ce sujet:
sorties:
je l'avoue, ce n'est pas
CDATA
, mais je ne vois pas le problème ... l'analyse nécessite un peu plus de temps, mais otoh, que, de rectification s'échapper beaucoup plus robuste queCDATA
...la version avec
XMLNode
utilise leflash.xml
paquet, c'est pour la compatibilité ascendante avec AS2 ... n'a pas le même avis, il a disparu sous FP10 ... cependant, vous pouvez utiliser cettecomme un remplacement et ensuite utiliser
appendChild
comme vous le feriez avec flash.xml ...vous pouvez également l'utiliser e4x style, si vous l'envelopper dans une fonction
et puis
mais personnellement, je pense que les chaînes de caractères, qui sont à la fois basées sur le texte et relativement court, devrait être échappé, plutôt enveloppé dans
CDATA
...mise à jour:
je ne reçois pas votre point ici
c'est ce que toute chose est sur ... 😀 ...
"<"
serait interprété lors de l'analyse, alors que"<"
est juste reconverti en"<"
, donc après l'analyse du XML, vous aurez exactement la même chaîne comme avant ...c'est mon code:
fonctionne parfaitement pour moi sur flash player 10, compilé avec le sdk flex 4 ... n'avez pas de flash IDE à la main, mais quand il s'agit de pure ActionScript les résultats sont presque certainement les mêmes, donc ça devrait marcher (vous pouvez l'utiliser comme votre classe de document, si vous voulez, ou tout simplement l'instancier) ...
btw. la trace de la première montre, que le deuxième exemple fonctionne, ce qui est également tout à fait évident, puisque
new XML(<String>)
utilise le natifXML
analyseur de créer unXML
de la chaîne ...ici est ce que le ci-dessus génère:
fonctionne très bien pour moi ... 🙂
greetz
back2dos
Je ne suis pas la cdata fonction d'assistance à compiler dans le SDK Flex 3.X rien.
quelles erreurs avez-vous?
Je suis compilateur mxml d'erreur: "Parse error"\"); \n\t\t}\n\n\n\t\....de retour de new XML("<![CDATA[" + data + "]]>");" j'ai ajouté un compilable mise en œuvre de la cdata fonction ci-dessous.
OriginalL'auteur back2dos
Ci-dessus cdata fonction doit ressembler à la suivante, un avis à la dernière ">" est échappé dans le code. Sinon il y a des erreurs de compilation.
OriginalL'auteur taudep
Merci, cdata fonction est très utile. J'ai écrit une nouvelle.
OriginalL'auteur emrahsifoglu
beau travail 🙂
OriginalL'auteur eldervaz
Voici une autre solution
OriginalL'auteur Tahir Alvi
Voici ma solution sans l'aide de fonctions:
Si vous avez besoin de remplacer les nœuds de contenu et de conserver le nœud attributs que vous pouvez utiliser:
OriginalL'auteur Malacinjo