编辑(最终):
我觉得我得到你问:什么是已选定company.(@level = 3)
作为一个孩子company.(@level = 1)
节点。这也被称为所选节点的“祖先”。 AS3 XML没有健壮的祖先语法,因此您必须手动向上步进。
对于未知级别的育儿,请使用类似this post discuss中的注释的循环。请注意,以下代码使用id
属性进行搜索。这是因为所有id
都必须在单个XML中唯一,所以您可以保证找到该ID。
var xml:XML = <companies>
<company id="1" name="boo" level="1">
<company id="2" name="hoo" level="2">
<company id="3" name="ooo" level="3"/>
</company>
</company>
<company id="4" name="boo" level="1">
<company id="5" name="hoo" level="2">
<company id="6" name="ooo" level="3"/>
</company>
</company>
<company id="7" name="boo" level="1">
<company id="8" name="hoo" level="2">
<company id="9" name="ooo" level="3"/>
</company>
</company>
</companies>
// just for testing:
var selectedNodeXML:XML =
<company id="8" name="hoo" level="2" />
var selectedID:String = [email protected];
trace("selectedID = " + selectedID);
var ancestorID:String = "";
for each(var companyNode:XML in xml.elements("*"))
{
trace("searching: " + companyNode.toXMLString());
trace("res: " + (companyNode..company.(@id == selectedID)[email protected] == selectedID));
if(
[email protected] == [email protected]
//|| companyNode.contains(selectedNodeXML) // You can use this if nothing gets messed up . . .
|| companyNode..company.(@id == selectedID)[email protected] == selectedID // . . . but I think this is more reliable.
){
ancestorID = [email protected]();
break;
}
}
trace("significant ancestor ID: " + ancestorID);
来源
2012-01-03 06:40:23
iND
一个然而我的问题越来越例如所选择的节点的顶层父的思想,如果我已经选择<公司ID =“3”名称=“OOO”电平=“3” />如何做我得到它的顶级父母 – cghrmauritius 2012-01-03 07:06:28
你的意思是选择了什么?顶级父母永远是根,所以我不知道你在找什么。尽可能给出一个例子,说明你在选择什么,以及父母可能是什么。 – iND 2012-01-03 07:40:59
感谢您的回复我所做的是在flex中使用树控件,并且我有一个与选定的xml节点一起工作的函数,但是我的函数需要知道id是最高级别(级别1)的父节点。我希望这有点更清楚? – cghrmauritius 2012-01-03 07:51:20