Flash AS3 et XML: manière de fixer les sauts de ligne dans htmlText qui utilise dans le fichier XML?

StackOverflow https://stackoverflow.com/questions/3011948

  •  26-09-2019
  •  | 
  •  

Question

Je vous importez du texte depuis un fichier xml et j'utilise htmlText pour essayer de garder un peu de style avec des étiquettes. J'ai à la fois la police régulière et le visage gras intégré, et la mise en gras fonctionne très bien. Le problème est qu'il annonce des espaces autour des mots en gras comme un tiret du paragraphe et fait ensuite une ligne-break après eux. Qu'est-ce qui se passe, est-il un moyen de fixer?

fromxmlText.htmlText = theXML.contenttext;

Si je tire le texte d'un fichier txt, il fonctionne très bien, mais en dehors d'un fichier xml provoquant la mise en forme funky. help « lil?

Était-ce utile?

La solution

Pour ajouter HTML en XML, vous devez utiliser des blocs CDATA sinon le HTML est considéré comme faisant partie le document XML.

par exemple.

<root>
    <someHtml><![CDATA[I can contain<br />html tags]]></someHtml>
    <somePlainText>I cannot contain html tags since they will be 
                   seen as XML nodes</somePlainText>
</root>

Assurez-vous également que vous enregistrez vos fichiers XML avec des fins de ligne unix et codées au format UTF-8. Si vous utilisez Windows terminaisons de ligne (\r\n) puis flash tend à double espace des sauts de ligne. Votre éditeur devrait vous permettre de spécifier les fins de ligne.

Autres conseils

J'importais l'alimentation d'une dynamique dans une annonce éclair de mine qui avait des balises HTML intégrées. Je faisais le même problème. Je regex pour rechercher et remplacer. Voici la fonction que j'utilisais. vous pouvez prob utiliser mon code regex là-bas pour faire la même chose. Il semble que nous avions le même problème. Espérons que cela aide:

Fonction Parserover_feature (rover_feature: XML): void {

var s:String = rover_feature.items.item[0].article;
s = s.replace(/(?:<br>)+/gi, '<br>');
s = s.replace(/\n/g, '');
container.info_txt.htmlText = s
//trace (s);

}

Il est difficile de dire sans voir votre XML, mais essayez de jongler avec le mondiale propriétés XML en particulier ignoreWhitespace . En fonction de vos fins de ligne, vous devrez peut-être de les dépouiller avant de mettre le texte dans le champ de texte.

si vous intégrez de xml puis assurez-vous que vous utilisez des balises CDATA pour afficher du code préformaté, sinon vous exportez le contenu de plusieurs noeuds XML.

voir écoles w3 pour plus d'informations.

Assurez-vous également que votre textField est réglé sur multiline avant de configurer votre TextField.htmlText = xml avec
i.e..

var myText:TextField = new TextField();
myText.multiline = true;
myText.htmlText = (your xml node with the <br/ >);
addChild(myText);

Hope this helps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top