AS3: Потомки с кратными условиями - PullRequest
0 голосов
/ 21 апреля 2011

Пример моего списка 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 .

Как я могу получить тот же список, но также ищу id узла B узлов?Что-то вроде:

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>

Поскольку у него есть узел A с id = 1, у которого есть узел B с идентификатором= 3.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

ОБНОВЛЕНО

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

А как насчет этого?

0 голосов
/ 22 апреля 2011

Да, условия можно комбинировать.

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); 
...