Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.05.2011, 15:14
Denisator вне форума Посмотреть профиль Отправить личное сообщение для Denisator Найти все сообщения от Denisator
  № 1  
Ответить с цитированием
Denisator
 
Аватар для Denisator

Регистрация: Aug 2000
Адрес: Калининград
Сообщений: 236
Отправить сообщение для Denisator с помощью ICQ
По умолчанию Не получается обратиться к ноду XML

Есть вот такой XML:
Код:
<battle id1="000" back_url="res/back/lava.jpg" battle_type="blood" timeout="30000">
	<left id1="000" type="male" nick="Denisator" clan_name="Stalkers" clan_emblema_url="res/clan_emblema/stalkers.gif">
		<stats level="10" health="100" strength="5"/>
		<ammunition>
			<head name="Шлем Хаоса" head_url="res/ammunition/head/chaos_helm.png">Сила +100\n Ловкость +30</head>
			<hands></hands>
			<hooks></hooks>
			<body></body>
			<legs></legs>
			<foot></foot>
			<weapon></weapon>
			<shield></shield>
		</ammunition>
	</left>
	<right id="001" type="male" name="Xflat" clan_name="Stalkers" clan_emblema_url="res/clan_emblema/stalkers.gif">
		<stats level="10" health="100" strength="5"/>
		<ammunition>
			<head name="Шлем Хаоса" head_url="res/head/chaos_helm.png">Сила +100\n Ловкость +30</head>
			<hands></hands>
			<hooks></hooks>
			<body></body>
			<legs></legs>
			<foot></foot>
			<weapon></weapon>
			<shield></shield>
		</ammunition>
	</right>
</battle>
К ноду battle получается обратиться и вытащить свойства, а к более глубоким узлам никак не получается обратиться. Объясните, пожалуйста, что я делаю не правильно.

Код AS1/AS2:
 
var flooring:XML = new XML(data);
flooring.ignoreWhite = true;
 
_root.back = flooring.firstChild.attributes.back_url;
_root.helm = flooring.firstChild.firstChild.attributes.clan_emblema_url;
trace(_root.back); // трейс выдаёт "res/back/lava.jpg"
trace(_root.helm); // трейс выдаёт "undefined"
__________________
Это подпись.

Старый 14.05.2011, 15:26
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Верно вроде.
У меня
Код AS1/AS2:
trace(_root.helm)
выдает
Код:
res/clan_emblema/stalkers.gif
Но. Я проверяю с учетом асинхронности загрузки по отношению к выполнению кода, а у вас я этого не наблюдаю. Сделайте так и вы:
Код AS1/AS2:
var xmlData:XML = new XML();
xmlData.ignoreWhite = true ;
xmlData.onLoad = loadXML;
xmlData.load('config.xml');
 
function loadXML (success:Boolean)
{
	if (success)
	{
		var mainNode:XMLNode = this.firstChild ;
		_root.back = mainNode.attributes.back_url;
		_root.helm = mainNode.firstChild.attributes.clan_emblema_url;
		trace(_root.back);
		trace(_root.helm);
	}
	else
	{
		message_tf.text = 'Ошибка связи\nс конфигуратором данных xml';
	}
}
__________________
Идите первым!


Последний раз редактировалось mooncar; 14.05.2011 в 15:37.
Старый 14.05.2011, 19:50
Denisator вне форума Посмотреть профиль Отправить личное сообщение для Denisator Найти все сообщения от Denisator
  № 3  
Ответить с цитированием
Denisator
 
Аватар для Denisator

Регистрация: Aug 2000
Адрес: Калининград
Сообщений: 236
Отправить сообщение для Denisator с помощью ICQ
Асинхронность у меня учитывалась, но я её при цитировании кода убрал.

Код AS1/AS2:
	var lvSend:LoadVars = new LoadVars();
	var lvReceive:LoadVars = new LoadVars();
	lvSend.command = 'getBattleInf';
	lvReceive.onData = function(data) {
		//trace(data);
		_root.loading._visible = false;
		if (data == null) {
			_root.textbox.text = 'error';
		} else {
			var flooring:XML = new XML(data);
			//_root.textbox.text = data;
			flooring.ignoreWhite = true;
			// По окончанию загрузки выводим содержимое XML документа
			_root.back = flooring.firstChild.attributes.back_url;
			_root.helm = flooring.firstChild.firstChild.attributes.clan_emblema_url;
			trace(_root.back);
			trace(_root.helm);
			play();
		}
	};
	lvSend.sendAndLoad("battle.xml",lvReceive,'POST');
stop();
__________________
Это подпись.

Старый 14.05.2011, 20:20
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Тем не менее, сам парсинг у вас верный...
А что трейс показывает?
Код AS1/AS2:
....
var flooring:XML = new XML(data);
trace(flooring);
...
И кстати, вы отправляете POST'ом данные, они у вас там обрабатываются как-то? Какой-то скрипт отдает battle.xml?
__________________
Идите первым!


Последний раз редактировалось mooncar; 14.05.2011 в 20:25.
Старый 14.05.2011, 20:22
Denisator вне форума Посмотреть профиль Отправить личное сообщение для Denisator Найти все сообщения от Denisator
  № 5  
Ответить с цитированием
Denisator
 
Аватар для Denisator

Регистрация: Aug 2000
Адрес: Калининград
Сообщений: 236
Отправить сообщение для Denisator с помощью ICQ
Трейс показывает именно то что я написал в первом посте.
trace(_root.back); // трейс выдаёт "res/back/lava.jpg"
trace(_root.helm); // трейс выдаёт "undefined"
Тоесть первый нод показывает, а следующий нет.

Цитата:
И кстати, вы отправляете POST'ом данные, они у вас там обрабатываются как-то? Какой-то скрипт отдает battle.xml?
Пока я побращаюсь локально к battle.xml, однако потом я собираюсь получать XML от пхп скрипта которому я также мог бы слать флэшем команды.
__________________
Это подпись.


Последний раз редактировалось Denisator; 14.05.2011 в 20:32.
Старый 14.05.2011, 20:30
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Код AS1/AS2:
flooring.ignoreWhite = true ;
trace(flooring);
Посмотреть, какой XML получается из полученной строки, весь.
Там должно выводится все, что в первом посте у вас. Нормально с этим, без обрывов?

Добавлено через 6 минут
И все же, попробуйте мою схему, если заработает, след. шагом попробуете перевести на скрипт.
__________________
Идите первым!


Последний раз редактировалось mooncar; 14.05.2011 в 20:35.
Старый 14.05.2011, 20:47
Denisator вне форума Посмотреть профиль Отправить личное сообщение для Denisator Найти все сообщения от Denisator
  № 7  
Ответить с цитированием
Denisator
 
Аватар для Denisator

Регистрация: Aug 2000
Адрес: Калининград
Сообщений: 236
Отправить сообщение для Denisator с помощью ICQ
Цитата:
Сообщение от mooncar Посмотреть сообщение
Код AS1/AS2:
flooring.ignoreWhite = true ;
trace(flooring);
Посмотреть, какой XML получается из полученной строки, весь.
Там должно выводится все, что в первом посте у вас. Нормально с этим, без обрывов?
Поставил трейс, он выдал:
Код:
<battle id1="000" back_url="res/back/lava.jpg" battle_type="blood" timeout="30000">
	<left id1="000" type="male" nick="Denisator" clan_name="Stalkers" clan_emblema_url="res/clan_emblema/stalkers.gif">
		<stats level="10" health="100" strength="5" />
		<ammunition>
			<head name="Шлем Хаоса" head_url="res/ammunition/head/chaos_helm.png">Сила +100\n Ловкость +30</head>
			<hands />
			<hooks />
			<body />
			<legs />
			<foot />
			<weapon />
			<shield />
		</ammunition>
	</left>
	<right id="001" type="male" name="Xflat" clan_name="Stalkers" clan_emblema_url="res/clan_emblema/stalkers.gif">
		<stats level="10" health="100" strength="5" />
		<ammunition>
			<head name="Шлем Хаоса" head_url="res/head/chaos_helm.png">Сила +100\n Ловкость +30</head>
			<hands />
			<hooks />
			<body />
			<legs />
			<foot />
			<weapon />
			<shield />
		</ammunition>
	</right>
</battle>
Попробовал Ваш код и он всё правильно выдаёт. Но я не знаю как его перевести на работу со скриптом.
__________________
Это подпись.

Старый 14.05.2011, 20:54
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 8  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вместо
Код AS1/AS2:
xmlData.load('battle.xml');
запиши что-то вроде
Код AS1/AS2:
xmlData.load('battle.php?command=getBattleInf');
То есть battle.php отдавать должен будет строку XML-ную, а вот принимать данные GET'ом, то есть в его начале такая строка будет:
PHP код:
$command = !_GET['command']; 
Другого решения сейчас в голову не приходит, с POST'ом, может кто подскажет. Вообще, у XML есть метод XML.sendAndLoad, может быть подойдет, я его сам не смотрел.
__________________
Идите первым!

Старый 14.05.2011, 21:03
Denisator вне форума Посмотреть профиль Отправить личное сообщение для Denisator Найти все сообщения от Denisator
  № 9  
Ответить с цитированием
Denisator
 
Аватар для Denisator

Регистрация: Aug 2000
Адрес: Калининград
Сообщений: 236
Отправить сообщение для Denisator с помощью ICQ
Спасибо, Луноход.
Буду делать по твоему способу.
__________________
Это подпись.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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