Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   \n строки из XML (http://www.flasher.ru/forum/showthread.php?t=182649)

Wolsh 30.07.2012 15:14

У меня все выводится и переносится, и никакие теги в видимом тексте не остаются:
Код AS3:

var xml:XML = <group name="descrition"><![CDATA[Организатор:<br/>Межрегиональная общественная организация содействия архитектурному образованию.]]></group>;
var txt:TextField = new TextField();
addChild(txt);
txt.multiline = true;
txt.width = 1000;
txt.htmlText = xml.toString(); // лучше xml.text();

Если минимальный пример работает, ищите ошибку в другом месте.

strangedk 30.07.2012 15:48

Цитата:

Сообщение от FriOne (Сообщение 1090250)
Вообще-то код ас2, но все равно спасибо)

Не обратил внимание, извиняюсь. Но суть содержания XML остается той же.

У меня тоже подозрение что баг в другом месте. Или сам XML кривой, или в коде что-то

fish_r 30.07.2012 15:56

Возможно больше "ко двору" ignoreWhitespace

strangedk 30.07.2012 16:04

Цитата:

Сообщение от fish_r (Сообщение 1090260)
Возможно больше "ко двору" ignoreWhitespace

А чем поможет?

fish_r 30.07.2012 19:49

А кстати говоря да - ерунда получается... Тогда можно исопльзовать \\&#xD; ( без косых только, они сейчас просто экранируют символ переноса строки ).

iNils 31.07.2012 00:01

Я в шоке, что никто не дал ответа на такой банальный вопрос, который довольно часто задавали на форуме.
Когда мы пишем \n в коде, то при компиляции получаем один символ переноса строки. При загрузки из внешнего источника, этого не происходит и мы имеем два символа \ и n.
Всего то нужно заменить экранированный обратный слеш и n, на \n.
Код AS3:

str = str.replace(/\\n/g, '\n')


dimarik 31.07.2012 00:32

Как просто. Вроде "\\" — это экранирование бэк-слеша. Но то в языке программирования Си

CDATA интерпретируется "как есть". В нем достаточно организовать LF, CR или CR/LF. Т.е. не прописывать "\n" в явном виде. Иначе оно интерпретируется как два отдельных символа "\" и "n".

Wolsh 31.07.2012 00:47

Ага. Это из разряда "пишем в местах перевода строки звездочки - *, потом в рантайме делаем сплит и джойн с заменой звездочек на перенос \n".
Да просто не надо пользоваться в XML и в других внешних данных этой системой. Совершенно верно сказано, что в контексте plain text это просто два символа.
Если текст требует форматирования, надо пользоваться форматированием, html или TLF Markup. А игры с заменой экранчиков рано или поздно сыграют злую шутку.

fish_r 31.07.2012 11:04

Цитата:

Сообщение от iNils (Сообщение 1090319)
Я в шоке, что никто не дал ответа на такой банальный вопрос, который довольно часто задавали на форуме.
Когда мы пишем \n в коде, то при компиляции получаем один символ переноса строки. При загрузки из внешнего источника, этого не происходит и мы имеем два символа \ и n.
Всего то нужно заменить экранированный обратный слеш и n, на \n.
Код AS3:

str = str.replace(/\\n/g, '\n')


В смысле "правильность" заключается в том, чтобы сначала расставлять по тексту знаки "\n", а потом самому же парсить текст чтобы заменить их экранированные варианты?

Моё решение лучше.

FriOne 31.07.2012 11:38

Как раз нашел эту тему http://www.flasher.ru/forum/showthread.php?t=90892
Но за реплейс спасибо, блин давно пора разобраться в регулярных выражениях..
Чтобы заменить \\n и \\t одним реплейсом же никак?


Часовой пояс GMT +4, время: 03:57.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.