2012-01-03 49 views
1

嗨如何检索动作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> 
    </companies> 

在此先感谢。

回答

1

编辑(最终):

我觉得我得到你问:什么是已选定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); 
+0

一个然而我的问题越来越例如所选择的节点的顶层父的思想,如果我已经选择<公司ID =“3”名称=“OOO”电平=“3” />如何做我得到它的顶级父母 – cghrmauritius 2012-01-03 07:06:28

+0

你的意思是选择了什么?顶级父母永远是根,所以我不知道你在找什么。尽可能给出一个例子,说明你在选择什么,以及父母可能是什么。 – iND 2012-01-03 07:40:59

+0

感谢您的回复我所做的是在flex中使用树控件,并且我有一个与选定的xml节点一起工作的函数,但是我的函数需要知道id是最高级别(级别1)的父节点。我希望这有点更清楚? – cghrmauritius 2012-01-03 07:51:20