Просмотр полной версии : Flex 3b XML -обращение к нодам
SSergeyS
14.09.2007, 15:41
Есть MyXML:XML
при клике в дереве по ее ноду сохраняем нод в переменную curNode = e.currentTarget.selectedItem;
теперь мы хотим удалить из MyXML - curNode.
Как к нему правильно обратится, если мы заранее не знаем глубину вложенности и количество нодов на каждом уровне?
SSergeyS
14.09.2007, 17:23
а добавить нод?
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;
}
и это никак не подойдет для большой степени вложености. Помогите плиз решить это нормальным образом....
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());
SSergeyS
14.09.2007, 18:04
Изящно. Сейчас опробую....
Спасибо.
SSergeyS
14.09.2007, 18:41
Дело в том что 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;
Зачем знать? curNode известен? Известен. parent() у него есть? Есть. Какие проблемы?
SSergeyS
14.09.2007, 19:20
так в этом и вопрос )))
как именно?
таким образом как :
myXML.cureNone.appendChild(<node5 R="tratata"></node5>);
сделать нельзя...
извини может я не вижу элементарного - но я в конец запутался... потратил на эту задачу пару часов - и все решения кривоваты.... очень хочется изящное и абстрактно е решение но явно не хватает опыта….
curNode.parent() += <node />;
SSergeyS
17.09.2007, 11:00
curNode.parent() += <node/>;
выдает ошибку:
"1105: Target of assignment must be a reference value."
Тогда ставьте трейс на parent() и вперед.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.