2012-05-29 3 views
0

Мой последний Q: E4X select Nodes where descendants can be either A OR B or A && B был относительно того, как запросить для нескольких значений атрибутов в выражениях E4X, которые отвечали с этим @Patrick:Динамические E4X выражения

xml.Item.(descendants('ProductRange').(@id=="1" || @id=="2").length()>0); 

Теперь вопрос в том, как мы делаем значения динамические с использованием массива или строки?

немного, как это, но это не работает:

var attributeValues:String = "@id==\"1\" || @id==\"2\" || @id==\"3\" || @id==\"4\""; 
xml.Item.(descendants('ProductRange').(attributeValues).length()>0); 

Большое спасибо

ответ

0

массив, содержащий ваши значения могут быть сделаны, например, и затем с помощью indexOf поиска, чтобы найти идентификатор в нем :

var xml:XML=<Items> 
<Item name="aaa"> 
    <ProductRanges> 
     <ProductRange id="1" /> 
    </ProductRanges> 
</Item> 
<Item name="bbb"> 
    <ProductRanges> 
     <ProductRange id="2" /> 
    </ProductRanges> 
</Item> 
<Item name="ccc"> 
    <ProductRanges> 
     <ProductRange id="1" /> 
     <ProductRange id="3" /> 
     <ProductRange id="2" /> 
    </ProductRanges> 
</Item> 
</Items>; 

// you values filled from whatever source 
var valuesToFind:Array=["1","2", "3"]; 

// search if @id exist into your values 
// and unsure that there is any node returned 
var res:XMLList=xml.Item.(descendants('ProductRange').(valuesToFind.indexOf(@id.toString())>=0).length()>0); 
trace(res); 
+0

и для подтверждения этого метода indexOf не будет ложно находить значение id «1» в значении «14» ??? Кажется, для меня хорошо. – ukmikeb

+0

indexOf будет просто искать в массиве значение, которое вы хотите, поскольку в ваших значениях нет «14», чтобы найти нет pb. – Patrick

+0

просто дважды проверял, что IF, у вас есть узел , это не будет ошибочно найдено поиском «1» (потому что «1» - это «14») ... однако это выглядит прекрасно, и это здорово! – ukmikeb

Смежные вопросы