PDA

Просмотр полной версии : XML и HTML теги


kitslot
07.02.2010, 22:43
Подскажите плиз в чем грабли.
Делаю менюху на ActionScript2


menu_xml = new XML();
menu_xml.ignoreWhite = true;
menu_xml.onLoad = function(ok) {
if (ok) {
F_createMenu();
}
};
menu_xml.load("menu.xml");
F_createMenu = function () {
var len = menu_xml.childNodes[0].childNodes.length;
for (var i = 0; i<len; i++) {
_root.createEmptyMovieClip("btn"+i, i);
var b = _root["btn"+i];
b.createTextField("tf", 2, 0, 0, 200, 24);
b.tf.html= true;

with (b.tf) {
selectable = false;
htmlText = menu_xml.childNodes[0].childNodes[i].attributes.name;
}
b._y = (b._height+1)*i;
b.link = menu_xml.childNodes[0].childNodes[i].attributes.link;
b.onPress = function() {
getURL(this.link, "_self");
};
}
};

Данный скрипт загружает и парсит XML:

<menu>
<item name=':Зачем?дизайн' link='http://www.flashblog.ru' />
<item name=':Почему?мы' link='http://www.flashblog.ru' />
<item name=':Какие?мы' link='http://www.flashblog.ru' />
<item name=':О чем?стоит подумать' link='http://www.flashblog.ru' />
<item name=':Где?все купить' link='http://www.flashblog.ru' />
</menu>


Работает на ура!, но если я вставляю в поля HTML теги:

<item name=':Зачем?<b>дизайн</b>' link='http://www.flashblog.ru' />

то менюха не выводится, видимо парсер спотыкается... подскажите куда копать?
как его научить теги понимать, может както экранировать их можно?

Hauts
07.02.2010, 22:55
Не пишите тэги в атрибутах. И используйте CDATA:

<item>
<name><![CDATA[Зачем <b>дизайн</b>]]></name>
<link>http://www.flashblog.ru</link>
</item>

udaaff
07.02.2010, 22:55
Entity Description

&lt; < (less than)
&gt; > (greater than)
&amp; & (ampersand)
&quot; " (double quotes)
&apos; ' (apostrophe, single quote)

kitslot
07.02.2010, 23:29
так парсер не понял, undefined в полях выкинул
<item>
<name><![CDATA[Зачем <b>дизайн</b>]]></name>
<link>http://www.flashblog.ru</link>
</item>

а вот так прокатило
<item name='Зачем?&lt;b&gt;дизайн&lt;/b&gt;' link='http://www.flashblog.ru' />
Спасибо!

Hauts
07.02.2010, 23:40
Потому, что парсер немного изменить нужно.