0

我的最后一个问题: E4X 选择后代可以是 A OR B 或 A && B 的节点 是关于如何在 E4X 表达式中查询多个属性值,@Patrick 对此进行了回答:

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 回答