我需要访问XML格式的信息。
我需要的信息不存储在我的XML中的每个对象上,只存储在父对象上。但是如何检查是否存在父级,因此在选择树中的第一个对象(没有父级)时不会抛出错误?
这是我现在使用的代码,它适用于除了没有父项的对象之外的所有内容。
public function getParentItem():String{
var selectedItem:XML = treeView.selectedItem;
while(selectedItem.@Close == ""){
selectedItem = selectedItem.parent();
}
return selectedItem.@Close;
}
我想我会添加一个if循环来检查父级是否存在,但不确定我是如何做到的。
谢谢!
答案 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;
}
}