PDA

Просмотр полной версии : XML парсится, но значения не присваиваются...


Seloff
26.05.2008, 14:02
Задача:
Забирать из динамически создаваемого на сервере xml-файла атрибуты входящих в него нодов для присваивания текстовым полям внутри флешки значений этих атрибутов.

XML файл

<?xml version = '1.0' encoding = 'UTF-8'?>
<xml>
<sso_link link="sso_link" />
<forum_link link="forum_link" />
<portal_link link="portal_link" />
<site_link link="site_link" />
<maps_link link="maps_link" />
<search_link link="search_link" />
<stat_link link="stat_link" />
<media_link link="media_link" />
<quartz_link link="quartz_link" />
<gsm_link link="gsm_link" />
<files_link link="files_link" />
<tt_link link="tt_link" />
</xml>

Скрипт флешки (подвешено на нажатие кнопки)
on(press) {
myXML = new XML ("myXML.xml");
myXML.ignoreWhite = true;
myXML.load("myXML.xml");
myXML.onLoad = function(success)
{
if(success == true)
{
trace("XML loaded!"); // проверка, что точно парсится
//пробовал присваивать сначала переменным, ни фига не получилось
//var a = myXML.xml.childNodes[0].attributes.link;
//var b = myXML.xml.childNodes[1].attributes.link;
//var c = myXML.xml.childNodes[2].attributes.link;
//var d = myXML.xml.childNodes[3].attributes.link;
//var e = myXML.xml.childNodes[4].attributes.link;
//var f = myXML.xml.childNodes[5].attributes.link;
//var g = myXML.xml.childNodes[6].attributes.link;
//var h = myXML.xml.childNodes[7].attributes.link;
//var i = myXML.xml.childNodes[8].attributes.link;
//var j = myXML.xml.childNodes[9].attributes.link;
//var k = myXML.xml.childNodes[10].attributes.link;
//var l = myXML.xml.childNodes[11].attributes.link;

//В итоге решил делать вот таким образом (разумеется сначала было _root.text1.text = a;)
_root.text1.text = myXML.xml.childNodes[0].attributes.link;
_root.text2.text = myXML.xml.childNodes[1].attributes.link;
_root.text3.text = myXML.xml.childNodes[2].attributes.link;
_root.text4.text = myXML.xml.childNodes[3].attributes.link;
_root.text5.text = myXML.xml.childNodes[4].attributes.link;
_root.text6.text = myXML.xml.childNodes[5].attributes.link;
_root.text7.text = myXML.xml.childNodes[6].attributes.link;
_root.text8.text = myXML.xml.childNodes[7].attributes.link;
}
}
}


При проигрывании мувика мессага проверочная трейсится, но текстовым полям при нажатии кнопки присваивается значение undefined.

Где я дурак, никак понять не могу?

chingachgoog
26.05.2008, 14:10
А это что за xml?

myXML.xml.childNodes[0]...

Cрочно меняйте это безобразие на firstChild, например, и смотрите что такое рутовый узел. :)

Seloff
26.05.2008, 14:17
А это что за xml?
Это самая главная нода - для красоты сделал =)))

chingachgoog
26.05.2008, 14:20
Я понял, что это главный красивый узел, но красота сама по себе в синтаксис AS не входит :)

Seloff
26.05.2008, 14:26
Все заработало! Как всегда, мелочь, блин, а сколько нервов подпортила.
Можно тогда сразу доп. вопрос по теме?
1. Код флешки ссылается на xml файл, лежащий в одной папке с флешкой. А если этот файл выдается по урлу, к примеру http://server.com/myXML.xml, то следует писать вот так?
myXML = new XML ("http://server.com/myXML.xml");

2. Какой параметр у кнопки отвечает за ту урлу, которую она вызывает?
test_button.url?

chingachgoog
26.05.2008, 14:33
1) есть относительная и абсолютная адресация. И то и то работает как по сети, так и локально (с известными ограничениями)
2) кнопка должна вызывать getURL()

Seloff
26.05.2008, 14:41
1. То есть тот кусочек кода, что я написал - можно назвать ПРАВИЛЬНОЙ абсолютной адресацией? =)
2. Да, это я понимаю. Но если я хочу именно программно указать флешаку на то, что у вот этой кнопки именно такая урла и при нажатии на нее в будущем именно такая урла и должна вызываться? Тогда это будет выглядеть вот так test_button.getURL("http://zzz.ru");?

chingachgoog
26.05.2008, 14:56
1) Да. + Посмотрите хелп по XML.load() и XML.loaded например, там как раз в примерах оба способа написаны.
2) Да. + Посмотрите хелп к getURL(), обратите внимание на параметры метода

NB! Тут на форуме выложен хороший переведенный хелп.

Seloff
26.05.2008, 14:59
Огромное спасибо, дружище. Вы подарили мне веру в людей =)))))