0

私の最後のQ: 子孫がAORBまたはA&&Bのいずれかになり得る E4Xselectノードは、@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);

どうもありがとう

4

1 に答える 1

0

たとえば、値を保持する配列を作成し、indexOf検索を使用してその中のIDを見つけることができます。

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);
于 2012-05-29T13:37:11.657 に答える