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

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

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

Регистрация: Sep 2007
Сообщений: 36
По умолчанию Flex 3b XML -обращение к нодам

Есть
Код:
MyXML:XML
при клике в дереве по ее ноду сохраняем нод в переменную
Код:
 curNode = e.currentTarget.selectedItem;
теперь мы хотим удалить из MyXML - curNode.
Как к нему правильно обратится, если мы заранее не знаем глубину вложенности и количество нодов на каждом уровне?

Старый 14.09.2007, 15:57
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
delete curNode;

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

Регистрация: Sep 2007
Сообщений: 36
а добавить нод?
Код:
myXML.cureNone.appendChild();
не получится.
Да и не удаляет он тоже так, пробовал
Код:
delete XML.cureNone;
и это не подходит для любой степени вложенности....

Пробовал через параметре в самом ноде – но это огромный костыль!
Код:
if((int(curNode.@L)==0)||(int(curNode.@L)==1)||(int(curNode.@L)==-1))
		{		
		var str:String="level"+String(n);		
		switch(int(n))
		{			
			case 0:				
				xmlAll.appendChild(<{str} Name={name} L={String(n)} N={String(xmlAll.level0.length())}> </{str}>);				
				break;
			case 1:				
				xmlAll.level0[curNode.@N].appendChild(<{str} Name={name} L={String(n)} N={String(xmlAll.level1.length())}> </{str}>);					
				break;
			case 2:
				xmlAll.level0[curNode.parent().@N].level1[curNode.@N].appendChild(<{str} Name={name} L={String(n)} N={String(xmlAll.level2.length())}> </{str}>);	
				break;
			default	:
				xmlAll.appendChild(<{str} Name={name} L={String(n)}> </{str}>);
				break;	
		}
		View.dataProvider=xmlAll;
		}
и это никак не подойдет для большой степени вложености. Помогите плиз решить это нормальным образом....


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

Регистрация: Sep 2002
Сообщений: 30,787
Код:
var xml:XML = <data>
	<item><node><![CDATA[text]]></node></item>
	<item><![CDATA[text]]></item>
</data>
var node:XMLList = xml.item[0].node;
delete node.parent().node;
trace(xml.toXMLString());
trace('-----------');
xml.item += node;
trace(xml.toXMLString());

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

Регистрация: Sep 2007
Сообщений: 36
Изящно. Сейчас опробую....
Спасибо.

Старый 14.09.2007, 18:41
SSergeyS вне форума Посмотреть профиль Отправить личное сообщение для SSergeyS Найти все сообщения от SSergeyS
  № 6  
Ответить с цитированием
SSergeyS

Регистрация: Sep 2007
Сообщений: 36
Дело в том что XML многоуровневая с не одинаковым количеством нодов. И сами ноды в ней разные вот упрощенно говоря такая:
Код:
<data>
	<node2 N ="9"></node2>
	<node0>
	</node0>

	<node0>
		<node1>
		</node1>
		<node1>	
			<node2 N ="1"></node2>
		<node1>
	</node0
	<node0>
	<node2 N ="14"></node2>
		<node1>
			<node2 N ="2"></node2>
			<node2 N ="3"></node2>
			<node2 N ="4"></node2>
			<node2 N ="5"></node2>
		</node1>
		<node1>	
			<node2 N ="6"></node2>
		<node1>
	</node0
</data>
из этой XML строим дерево. По клику но какой-нибуть нод(любого уровня вложенности) мы должны мочь добавит в него новый нод или удалить текущий.
И проблема в основном построить код, который будет грамотно работать с любым нодом на любой глубине дерева.
Тоисть имея текущий нод
Код:
 curNode=e.currentTarget.selectedItem;
надо определить, где он находится в XML и выполнить с ним какие-нибуть действия. А в предыдущем скрипите мы должны обязательно знать заранее, где нод находится...
Код:
xml.item += node;

Старый 14.09.2007, 18:47
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Зачем знать? curNode известен? Известен. parent() у него есть? Есть. Какие проблемы?

Старый 14.09.2007, 19:20
SSergeyS вне форума Посмотреть профиль Отправить личное сообщение для SSergeyS Найти все сообщения от SSergeyS
  № 8  
Ответить с цитированием
SSergeyS

Регистрация: Sep 2007
Сообщений: 36
так в этом и вопрос )))
как именно?
таким образом как :
Код:
myXML.cureNone.appendChild(<node5 R="tratata"></node5>);
сделать нельзя...
извини может я не вижу элементарного - но я в конец запутался... потратил на эту задачу пару часов - и все решения кривоваты.... очень хочется изящное и абстрактно е решение но явно не хватает опыта….

Старый 14.09.2007, 20:21
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
curNode.parent() += <node />;

Старый 17.09.2007, 11:00
SSergeyS вне форума Посмотреть профиль Отправить личное сообщение для SSergeyS Найти все сообщения от SSergeyS
  № 10  
Ответить с цитированием
SSergeyS

Регистрация: Sep 2007
Сообщений: 36
curNode.parent() += <node/>;
выдает ошибку:
"1105: Target of assignment must be a reference value."

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

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

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


 


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


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