FLEX - 检查parent()是否存在?

时间:2012-01-19 11:41:07

标签: flash actionscript-3 flex

我需要访问XML格式的信息。

我需要的信息不存储在我的XML中的每个对象上,只存储在父对象上。但是如何检查是否存在父级,因此在选择树中的第一个对象(没有父级)时不会抛出错误?

这是我现在使用的代码,它适用于除了没有父项的对象之外的所有内容。

        public function getParentItem():String{
            var selectedItem:XML = treeView.selectedItem;

            while(selectedItem.@Close == ""){
                selectedItem = selectedItem.parent();
            }

            return selectedItem.@Close;

        }

我想我会添加一个if循环来检查父级是否存在,但不确定我是如何做到的。

谢谢!

1 个答案:

答案 0 :(得分:0)

以下是否适合您:

public function getParentItem():String{
    var selectedItem:XML = treeView.selectedItem;

    while(selectedItem)
    {
        var closeAttribute:String = selectedItem.@Close;

        if(closeAttribute && closeAttribute != "") return closeAttribute;
        else selectedItem = selectedItem.parent();
    }

    return null;
}

基本上它应该在XML树上工作,寻找一个没有“Close”属性值的节点。如果XML节点没有父节点,它将停止(在这种情况下,它将返回null)。

或者这是递归完成的相同功能(为什么不!);)

public function getParentItem() : String
{
    return findCloseAttribute(XML(treeView.selectedItem));
}

private function findCloseAttribute(xml:XML) : String
{
    if(xml)
    {
        var closeAttribute:String = xml.@Close;

        if(closeAttribute && closeAttribute != "") return closeAttribute;
        else return findCloseAttribute(xml.parent());
    }
    else
    {
         return null;
    }
}