FLEX - Проверить, существует ли parent ()? - PullRequest
0 голосов
/ 19 января 2012

Мне нужен доступ к информации в моем XML.

Необходимая информация хранится не в каждом объекте моего XML, а только в родительском.Но как я могу проверить, есть ли родитель или нет, чтобы он не выдавал ошибку при выборе первого объекта в дереве (без родителей)?

Это код, который я использую сейчас, и он работаетдля всего, кроме объектов без родителей.

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

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

            return selectedItem.@Close;

        }

Думаю, я добавлю цикл if, чтобы проверить, существует ли родитель, но не уверен, как бы я это сделал.

Спасибо!

1 Ответ

0 голосов
/ 19 января 2012

Будет ли работать для вас следующее:

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, ища узел, который имеет значение none "" атрибута "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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...