2010-01-22 4 views
0

J'utilise URLLoader dans un projet ActionScript pour lire du code XML. Je le traite ensuite et le place dans un champ de texte. Tout a l'air bien. Cependant, je ne veux pas que le XML soit externe à mon SWF. Alors je l'ai fait:Actionscript effaçant les espaces lorsqu'il ne devrait pas

var internalXML:XML = <Content><P>It was in <City>Paris</City> that I first 
took a <Activity>walk in nature</Activity>.</P></Content> 

qui est, je pris le XML identique et lui a attribué à une instance d'objet XML directement dans mon code ActionScript. Je cours alors exactement le même processus. Mais cette fois, les espaces ont été supprimés entre n'importe quel contenu de balise XML et le texte brut. Donc, que ce qui précède se lit dans le champ de texte: "Il était dans Paristhathat que j'ai d'abord pris la nature dans la nature."

Dans les deux cas, j'ai XML.ignoreWhitespace = false. J'ai également essayé XML.prettyPrinting = false. Pas d'aide.

Quelqu'un at-il une idée de ce qui pourrait se passer?

Répondre

1

Il est probable que le découpage des espaces ait lieu au moment de la compilation, et non lors de l'exécution (d'où l'inefficacité de XML.IgnoreWhitespace).

Pour avoir le code XML conservé texto jusqu'à l'exécution (comme il était quand vous le chargez avant), vient de mettre en une chaîne:

var internalXML:XML = XML("<Content><P>It was in <City>Paris</City> that I first took a <Activity>walk in nature</Activity>.</P></Content>")

+0

Excellente suggestion, merci Cameron. En attendant, j'ai trouvé une solution plus simple qui, j'imagine, accomplit la même chose. J'ai eu XML.ignoreWhitespace = false dans un gestionnaire de ma classe principale. Je l'ai déplacé en dehors de la classe et l'ai mis juste après les déclarations d'importation. Maintenant ça marche. Si l'ignoreWhitespace est une propriété statique, pourquoi est-ce important de savoir où elle est déclarée? Plus généralement, comment savez-vous ce qui est fait au moment de la compilation et ce qui est fait à l'exécution? – David

+0

Puisque ignoreWhitespace est une propriété statique, cela ne devrait pas avoir d'importance là où il est défini (bien qu'il y ait parfois des bogues bizarres dans Flash). Peut-être que votre code n'était pas exécuté quand vous pensiez que c'était? En outre, je ne faisais que deviner à propos de la chose à la compilation. En fait, je n'ai aucune idée de ce qui arrive à XML en ligne (et je ne suis pas entièrement sûr qu'il est documenté). En règle générale, les choses qui peuvent être déterminées au moment de la compilation sont généralement effectuées à ce moment-là, puisqu'elles sont ensuite effectuées une fois et ne doivent pas être effectuées au moment de l'exécution. Vous devez lire les docs ou essayer des trucs pour le savoir à coup sûr. – Cameron

Questions connexes