AS3:具有倍数条件的后代

时间:2011-04-21 19:27:10

标签: xml actionscript-3 conditional-statements descendant

我的XML列表示例:

<listnode>
   <nodeA id="1">
       <nodeB id="1" />
   </nodeA>
   <nodeA id="2">
       <nodeB id="2" />
   </nodeA>
</listnode>

<listnode>
   <nodeA id="2">
       <nodeB id="2" />
   </nodeA>
   <nodeA id="1">
       <nodeB id="3" />
   </nodeA>
   <nodeA id="5">
       <nodeB id="1" />
   </nodeA>
</listnode>

<listnode>
    ... etc

我正在尝试根据多个条件获取XML列表。有一个条件,没关系,使用类似的东西:

var  list:XMLList = list.(descendants("nodeA").@id.contains("1"));

这为我提供了列表中所有 listnode 的列表,其中包含名为 nodeA 的后代,其属性为 id = 1

如何查找相同的列表,还要查看 nodeB 节点的 id ?类似的东西:

var  list:XMLList = list.(descendants("nodeA").@id.contains("1") && nodeA.descendants("nodeB").@id.contains("3"));

在这个例子中,这应该给我一个包含一个节点的列表:

<listnode>
   <nodeA id="2">
       <nodeB id="2" />
   </nodeA>
   <nodeA id="1">
       <nodeB id="3" />
   </nodeA>
   <nodeA id="5">
       <nodeB id="1" />
   </nodeA>
</listnode>

因为它有一个id为1的nodeA,其nodeB的id = 3。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

<强>已更新

list.(descendants("nodeA").(@id.contains("1") && descendants("nodeB").@id.contains("3")).length() > 0)

这个怎么样?

答案 1 :(得分:0)

是的,条件可以合并。

var list:XML = <list>
<listnode>
   <nodeA id="1">
       <nodeB id="1" />
   </nodeA>
   <nodeA id="2">
       <nodeB id="2" />
   </nodeA>
</listnode>

<listnode>
   <nodeA id="2">
       <nodeB id="2" />
   </nodeA>
   <nodeA id="1">
       <nodeB id="3" />
   </nodeA>
   <nodeA id="5">
       <nodeB id="1" />
   </nodeA>
</listnode>
</list>;
var result:XMLList = list.listnode.descendants("*").(@id=="1" && children().length() > 0);