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

Вернуться   Форум Flasher.ru > Flash > Flex

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

Регистрация: Feb 2001
Сообщений: 9
Отправить сообщение для firedrago с помощью ICQ
Smile HTTPService > XML > ResultEvent > ArrayCollection

всем привет!
я сново застрял, помогите плс

значит так - забераю XML через HTTPService
Код:
<mx:HTTPService 
	id="mainData" 
	url="data/maindata.xml"
	result ="mainDataResultHandler(event)"
	/>
передаем в mainDataResultHandler
Код:
	
	adv1Data = ParseResult.getHomeAdv1Data(event);
	adv2Data = ParseResult.getHomeAdv2Data(event);
ParseResult выглядит так
Код:
	public class ParseResult{
		import mx.controls.Alert;
			import mx.rpc.events.ResultEvent;
			import mx.collections.ArrayCollection;
			import mx.collections.IViewCursor;
			import flash.utils.describeType;
	
	        public static function getWelcomeStr(event:ResultEvent):String{
        		return event.result.maindata.sysnavi.welcome;
        	}
        
 		
		public static function getHomeAdv1Data(event:ResultEvent):Array{
	return getStructureLevelData(event.result.maindata.home.adv1.item);	
}
			
		public static function getHomeAdv2Data(event:ResultEvent):Array{
		return getStructureLevelData(event.result.maindata.home.adv2.item);			
			}
			
			private static function getStructureLevelData(items:ArrayCollection):Array{
				var temp:ArrayCollection = new ArrayCollection();
				var img:String = "";
				var cursor:IViewCursor = items.createCursor();
		            while (!cursor.afterLast){
		            
		            	img = "";
		            	if(cursor.current.img != null){
		            		img = cursor.current.img;
		            	}
		            	temp.addItem({label:cursor.current.pageName, data:new Structure(cursor.current.id, cursor.current.template, cursor.current.pageName, img)});
		                cursor.moveNext();
		            }
		            return temp.toArray();	   
			}			
	}
XML -
Код:
<?xml version="1.0" encoding="UTF-8"?>7
<maindata>
	<sysnavi>
		<welcome>Welcome !</welcome>
	</sysnavi>
	<home>
		<adv1>
			<item id="id001" template="template001" pageName="#1" img="http://127.0.0.1:8080/gfx/img/ff808082144529eb0114457118ed0006.png"/>
			<item id="id001" template="template001" pageName="#1" img="http://127.0.0.1:8080/gfx/img/ff808082144529eb0114452b66e70005.png"/>
			<item id="id001" template="template001" pageName="#1" img="http://127.0.0.1:8080/gfx/img/ff808082147a6c0e01147ab9067d0025.png"/>
		</adv1>
		<adv2>
			<item id="id001" template="template001" pageName="#1" img="http://127.0.0.1:8080/gfx/img/ff808082153db79501153e29be180014.png"/>	
		</adv2>
	</home>
</maindata>
а теперь проблема
если я зарание знаю что в xml только String, как maindata.sysnavi.welcome то считываю через мой ParseResult и все ок.....
а то что мне совсем не понятно это ситуация с maindata.home.adv1.item и maindata.home.adv2.item - если элементов item > 1 то все ок, а если только один то оно просто умерает.... я так понимаю, что в этом случае идет возврат данных не как ArrayCollection....
вот собственно и вопрос, как в моем случае сделать так, что бы независимо от того сколько item в xml-Node правильно все парсилось....

зарание благодарен!

Старый 03.11.2007, 15:31
†‡Paladin‡† вне форума Посмотреть профиль Отправить личное сообщение для †‡Paladin‡† Найти все сообщения от †‡Paladin‡†
  № 2  
Ответить с цитированием
†‡Paladin‡†

Регистрация: Nov 2005
Сообщений: 1,058
Я в твоем коде вообще неувидел функций, которые возвращают Array Collection
Код:
private static function getStructureLevelData(items:ArrayCollection):Array{
попробуй сменить на
Код:
private static function getStructureLevelData(items:ArrayCollection):ArrayCollection {
и
Код:
return temp.toArray();
на
Код:
return temp;


Последний раз редактировалось †‡Paladin‡†; 03.11.2007 в 15:33.
Старый 03.11.2007, 15:43
firedrago вне форума Посмотреть профиль Отправить личное сообщение для firedrago Найти все сообщения от firedrago
  № 3  
Ответить с цитированием
firedrago

Регистрация: Feb 2001
Сообщений: 9
Отправить сообщение для firedrago с помощью ICQ
может не очень ясно выразился
АrrayCollection получается автоматом из ResultEventa
Код:
public static function getHomeAdv1Data(event:ResultEvent):Array{
	return getStructureLevelData(event.result.maindata.home.adv1.item);	
}
можно конечно и так написать - но эффект тот же....
Код:
public static function getHomeAdv1Data(event:ResultEvent):Array{
	return getStructureLevelData(event.result.maindata.home.adv1.item as ArrayCollection);	
}

проблема именно в вытаскивании инфо из XML в виде ArrayCollection, даже если там всего 1 элемент.......

Старый 04.11.2007, 21:21
firedrago вне форума Посмотреть профиль Отправить личное сообщение для firedrago Найти все сообщения от firedrago
  № 4  
Ответить с цитированием
firedrago

Регистрация: Feb 2001
Сообщений: 9
Отправить сообщение для firedrago с помощью ICQ
Все отбой! Всем спасибо, сделал все совсем по другому........

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

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

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


 


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


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