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

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

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

Регистрация: Sep 2007
Сообщений: 36
Question Нужна помощь в понимании ситуации с XML

Нужна помощь в понимании ситуации.
Попробую описать проблему:
Есть XML файл с него считываю и пересобираю XML для DataGrid
XML:
Код:
<?xml version="1.0" encoding="utf-8"?>
<data>
	<node><Date>2008-01-14</Date><Text>TEST3</Text></node>
	<node><Date>2008-01-11</Date><Text>TEST1</Text></node>
	<node><Date>2008-01-11</Date><Text>TEST2</Text></node>
</data>
Флекс код(DGXML :XMLListCollection – dataProvider для DataGrid:
Код:
DGXML.removeAll();
var TXML:XML=XML(XMLLoade.data);
var NumNode:int=TXML.node.length();		    	
for(var i:int=0;i<NumNode;i++)
{
var xml:XML=XML(TXML.child(i));
DGXML.addItem(xml);
}
Проблема:
При каждом
Код:
var xml:XML=XML(TXML.child(i));
newsXML.addItem(xml);
в TXML появляется копия одного из нодов. Как и почему?
Если for переписать так:
Код:
	for(var i:int=0;i< TXML.node.length();i++)
то программа просто зацикливается, так как при каждой операции с TXML «длинна» ее увеличивается.

Старый 14.01.2008, 12:36
bokr вне форума Посмотреть профиль Отправить личное сообщение для bokr Посетить домашнюю страницу bokr Найти все сообщения от bokr
  № 2  
Ответить с цитированием
bokr

Регистрация: Nov 2007
Адрес: Кострома
Сообщений: 17
может надо писать:
Код:
var NumNode:int=TXML.length();
а не:
Код:
var NumNode:int=TXML.node.length();

Старый 14.01.2008, 12:45
SSergeyS вне форума Посмотреть профиль Отправить личное сообщение для SSergeyS Найти все сообщения от SSergeyS
  № 3  
Ответить с цитированием
SSergeyS

Регистрация: Sep 2007
Сообщений: 36
Вот скриншот из дебагера (прикреплен) множится второй нод и у всех нодов появляется еще один уровень вложенности
Читаю ХМЛ-ку:
Код:
XMLRequest=new URLRequest("XML.xml");
XMLLoade =new URLLoader(NewsRequest);
XMLLoade.addEventListener("complete",function loade():void 
{
});
Цитата:
Сообщение от bokr
может надо писать:
Код:
var NumNode:int=TXML.length();
а не:
Код:
var NumNode:int=TXML.node.length();
Во всяком случае
Код:
 var NumNode:int=TXML.node.length()
возвращает реальное количество нодов. Да и проблема к сожалению не в этом.
Изображения
 


Последний раз редактировалось etc; 14.01.2008 в 12:53.
Старый 14.01.2008, 12:54
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 4  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А что помешало использовать dataProvider.

Старый 14.01.2008, 13:01
SSergeyS вне форума Посмотреть профиль Отправить личное сообщение для SSergeyS Найти все сообщения от SSergeyS
  № 5  
Ответить с цитированием
SSergeyS

Регистрация: Sep 2007
Сообщений: 36
Вот так все работает идеально, но в чем была проблема, я так и не понял!
Код:
XMLRequest=new URLRequest("XML.xml");
XMLLoade =new URLLoader(NewsRequest);
XMLLoade.addEventListener("complete",function loade():void 
{
DGXML.removeAll();		    	
for(var i:int=0;i<XML(DocLoade.data).node.length();i++)
{
DGXML.addItem(XML(DocLoade.data).node[i]);
}
});
Цитата:
Сообщение от __etc
А что помешало использовать dataProvider.
dataProvider юзается динамически:
Код:
[Bindable]
 private var DGXML:XMLListCollection=new XMLListCollection();
....
<mx:DataGrid dataProvider="{newsXML}">


Последний раз редактировалось SSergeyS; 14.01.2008 в 15:13.
Старый 14.01.2008, 13:32
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
SSergeyS, я устал объединять за вами посты. Все ответы на цитаты должны быть в одном посте, а не пачкой постов подряд. Исправляйте и больше так не делайте.

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

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

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


 


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


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