Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   где ошибка в парсинге ХМЛ-я ? (http://www.flasher.ru/forum/showthread.php?t=169483)

djyamato 05.10.2011 22:58

где ошибка в парсинге ХМЛ-я ?
 
Стыдно, но в тупике я
Где я не так делаю ?

Код:

<controls left="0%" top="20%" basepath="assets/controls/" backgroundColor="0xFFFFFF">
      <players>
        <left stoppedState="LeftArrowPlayerStopped.png" playingState="LeftArrowPlayerPlaying.png" left="0" top="0"/>
        <rightP stoppedState="RightArrowPlayerStopped.png" playingState="RightArrowPlayerPlaying.png" left="50" top="0"/>
      </players>
</controls>

Парсинг
Код AS3:

if(LoadedXML.controls && LoadedXML.controls.toString()!="")
{
  trace("\n::\nXML loader: players left="+LoadedXML.controls.players.left);
}

Трэйс
Код:

::
XML loader: players left=


savva 05.10.2011 23:42

LoadedXML.controls.players.left.@stoppedState

вот так наверное надо написать

Wolsh 06.10.2011 00:18

Ну для начала у Вас невалидный XML - тег controls закрывется в первой же строке.

djyamato 06.10.2011 00:33

Цитата:

Сообщение от Wolsh (Сообщение 1037172)
Ну для начала у Вас невалидный XML - тег controls закрывется в первой же строке.

Прошу прощения, убирал кучу ненужного из него для постинга сюда и недоубирал слэш этот
Хмл валидный, в общем

dimarik 06.10.2011 00:33

Валидатор от w3.org

Не. Не из той оперы. Звиняюсь.

Вот тут какой-то нашелся.

Добавлено через 5 минут
controls уже и есть LoadedXML. Это рут-узел.

Код AS3:

trace("XML loader: players left="+LoadedXML.players.left);


trng 06.10.2011 00:41

LoadedXML.controls.players.left возвращает XMLList. Ну а раз List, значит надо указывать элемент:

Код AS3:

LoadedXML.players.left[0].@stoppedState

Добавлено через 3 минуты
На всякий случай: .@stoppedState - это тоже XMLList.

dimarik 06.10.2011 01:05

Если XMLList состоит из одного элемента, то FP делает toString именного его.
Все внутри XML есть XMLList.
Что-то вроде
Код AS3:

trace("XML loader: players left="+(LoadedXML.players.left as XMLList).toXMLString());

Если хочется глянуть как оно там.

trng 06.10.2011 01:11

Код AS3:

Если XMLList состоит из одного элемента, то FP делает toString именного его.

Если уж не работает, лучше перестраховаться. По крайней мере при дебаге.
djyamato, сдвиги есть?

djyamato 06.10.2011 02:23

Цитата:

Сообщение от dimarik (Сообщение 1037179)
controls уже и есть LoadedXML. Это рут-узел.

НЕ - не, это не рут, это один из вложенных нодов


Вот в таких записях работает
Код AS3:

trace("\n::\nLoadedXML.controls.players.left.toXMLString() = "+LoadedXML.controls.players.left.toXMLString());
trace("\n::\n(LoadedXML.controls.players.left as XMLList).toXMLString() = "+(LoadedXML.controls.players.left as XMLList).toXMLString());

Код:

::
LoadedXML.controls.players.left.toXMLString() = <left stoppedState="LeftArrowPlayerStopped.png" playingState="LeftArrowPlayerPlaying.png" left="0" top="0"/>

::
(LoadedXML.controls.players.left as XMLList).toXMLString() = <left stoppedState="LeftArrowPlayerStopped.png" playingState="LeftArrowPlayerPlaying.png" left="0" top="0"/>


Спасибо, люби друзи :)


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

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