Vladimirovich
Украина
252 сообщения
#12 лет назад
Привет всем FLASHерам.

Такой вопрос. Есть у меня XMLина:

<main>
<member>
<![CDATA[<b>Hello</b> world !]]>
</member>
</main>


Когда я ее парсю - то получаю:
&lt;b&gt;Hello&lt;/b&gt; world !

Как мне сделать, чтоб &lt; и &gt; обрабатывались как < и > ?

А то если вставлять в htmlText, тогда на экране <b>Hello</b> world ! вместо Hello world !

Спасибо за помощь.
Максим Шаммасов
29 лет, Россия
51 сообщение
#12 лет назад
А обязательно html тэги должны быть включены в блок <![CDATA[....]]> ?
 Vladimirovich
Украина
252 сообщения
#12 лет назад
Да. Дело в том, что все, что внутри <![CDATA[....]]> парсится не смотря на содержимое. Т.е. если я там напишу ошибку - она пропарсится все равно, ибо это как string.

Я проблему уже решил самым быстрым способом. Причем случайно

Делаю 2 текстовых поля с возможностью отоброжать html. Т.е. my_text_field1.html=true;

потом делаю my_text_field1.htmlText="&lt;b&gt;Hello&lt;/b&gt; world !";
Оно отображается как <b>Hello</b> world !
Делаю второе текстовое поле и для него код my_text_field2.htmlText = my_text_field1.text;

И вуаля

уже второе текстовое поле показывает Hello world !

P.S. это было надо для того, чтоб я мог внедрять внутрь XML кода - HTML код
Все гениальное - просто
Человек (клиент из США) - был просто зверски шокирован тем, что у меня получилось.
Ему 4 человека ничего не могли сделать.
Говорит, что русские, чтоб не делать лишней работы - придумают способ, что оно само делалось Вот оно
Максим Шаммасов
29 лет, Россия
51 сообщение
#12 лет назад
Вобще-то блок [CDATA[]] предназначен для того что бы в нём игнорировались все тэги. И все тэги переводятся в спец последовательности символов. Вобще непонятно зачем тебе это. Всё гораздо проще:
this.createTextField('txt', 1, 20, 20, 300, 20);
txt.html = true;
xml = new XML("<main><member><html><b>Hello</b> world</html></member></main>")
txt.htmlText=xml.firstChild.firstChild.firstChild

Если нет возможности сменить вывод данных, или по каким-то другим причинам не обойтись без [CDATA[....]]. Тогда можно заменить мешающие нам символы сплитно-джоинтельным методом.
this.createTextField('txt', 1, 20, 20, 300, 20);
txt.html = true;
xml = new XML("<main><member><![CDATA[<b>Hello</b> world !]]></member></main>")
txt.htmlText=(String(xml.firstChild.firstChild.firstChild).split('&lt;').join('<').split('gt;').join('>'))

Но если кодишь на АС 3, то сплиты и джойнты лучше заменить регулярным выражением.
 Vladimirovich
Украина
252 сообщения
#12 лет назад
Дело в том, что код может меняться:
<main><member><html><b>Hello</b> world</html></member></main>

или
<main><member><span class="bigfont"><b><u>Hello</u></b> world</class></member></main>


А это будет проблема. Код генерится из PHP. Как видешь, результат у меня получился гораздо проще:
my_txt.htmlText = "&lt;b&gt;Hello&lt;/b&gt; world !";
txt2.htmlText = my_txt.text;

может это варворство, но работает оочень здоро, просто и главное - безотказно с любыми допустимыми тегами



Miramax, тебе зачет. Видно, что тоже шаришь нормально