flex tree 递归出当前节点下的所有的父结点,万分感谢

ectime009 2010-05-18 10:52:06
我已经得到当前点击的节点的XML;
但是怎么 递归出当前节点下的所有的父结点
注意只要父结点,不要子节点

万分感谢
...全文
619 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ectime009 2010-05-18
  • 打赏
  • 举报
回复
你好,不好意思,我没有说明白
是当前节点下,所有是父节点的子节点
当前节点上的节点就不要了
就要当前节点下,所有是父节点的子节点
万分感谢!!!!!!

mayuanfei 2010-05-18
  • 打赏
  • 举报
回复
看看效果

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="800" height="500" creationComplete="init()" xmlns:ns1="aaa.*">
<mx:Script>
<![CDATA[
import mx.events.TreeEvent;
private function handleItemClose(evt:TreeEvent):void
{
tree1.expandChildrenOf(evt.item, false);
}

private function init():void {
this.tree1.addEventListener(TreeEvent.ITEM_CLOSE, handleItemClose);
}

private function getAllChildLabel():void
{
if(tree1.selectedItem) {
var allChild:Array = [];
var xml:XML = tree1.selectedItem as XML;
this.getAllChild(allChild, xml);
this.textArea1.text = allChild.join("\n");
}
}
private function getAllChild(allChild:Array, xml:XML):void
{
allChild.push(xml.@label);
if(xml.children().length()>0) {
for each(var node:XML in xml.children())
arguments.callee(allChild,node);
}
}

private function getAllParentLabel():void
{
if(tree1.selectedItem) {
var allParent:Array = [];
var xml:XML = tree1.selectedItem as XML;
this.getAllParent(allParent, xml);
this.textArea1.text = allParent.join("\n");
}
}

private function getAllParent(allParent:Array, xml:XML):void
{
allParent.push(xml.@label);
if(xml.parent()) {
arguments.callee(allParent, xml.parent());
}
}

]]>
</mx:Script>
<mx:Tree id="tree1" labelField="@label" showRoot="true" width="300" height="300">
<mx:XMLListCollection id="MailBox">
<mx:XMLList>
<folder label="Mail">
<folder label="INBOX"/>
<folder label="Personal Folder">
<Pfolder label="Business" />
<Pfolder label="Demo" />
<Pfolder label="Personal" isBranch="true" />
<Pfolder label="Saved Mail" />
</folder>
<folder label="Sent" />
<folder label="Trash" />
</folder>
</mx:XMLList>
</mx:XMLListCollection>
</mx:Tree>
<mx:Button id="button1" x="201" y="308" label="得到选择节点下的所有子节点label值" click="getAllChildLabel()" />
<mx:Button id="button2" x="201" y="338" label="得到选择节点的所有父节点label值" click="getAllParentLabel()" />
<mx:TextArea id="textArea1" x="317" y="2" width="276" height="298"/>

</mx:WindowedApplication>

ectime009 2010-05-18
  • 打赏
  • 举报
回复
高手帮帮忙
万分感谢
ectime009 2010-05-18
  • 打赏
  • 举报
回复
您好,能帮帮忙
写一个
我不明白怎么才能 遍历出来最底层子节点,遍历一个去掉一个;
万分感谢
xuetao121 2010-05-18
  • 打赏
  • 举报
回复
提示,反向思路,备份一个XML对象,然后遍历出来最底层子节点,遍历一个去掉一个,最后剩下的就是你的要求。
ectime009 2010-05-18
  • 打赏
  • 举报
回复
你好,我从你的代码看出来怎么能了,谢谢你

4,327

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧