我的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。
有什么想法吗?
答案 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);