0

我的 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"));

这为我提供了 list 中所有具有属性id=1的名为nodeA的后代的列表节点列表

如何检索相同的列表,但还要查找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 有一个 id=3 的 nodeB。

有任何想法吗?

4

2 回答 2

1

更新

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

那这个呢?

于 2011-04-21T20:11:34.283 回答
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); 
于 2011-04-21T20:03:56.093 回答