所以我有这个 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="2" />
</ProductRanges>
</Item>
</Items>
使用以下 E4X 查询,我只得到项目“aaa”和项目“bbb”。
trace( Items.Item.(descendants("ProductRange").@id == "1" || descendants("ProductRange").@id == "2") );
但是,我可以明白为什么我没有看到项目“ccc”,因为它既是 id="1" && "2"
所以不确定这里应该是什么正确的查询,即使后代是正确的技术。
我也不想做冗长的额外 id="1" && id="2" 查询,因为我有这些值的无限组合("2" && "3"、"1" && "2" && " 3") 等。
任何想法都会最有帮助..
谢谢
所以帕特里克用这个表达式解决了这个问题:
xml.Item.(descendants('ProductRange').(@id=="1" || @id=="2").length()>0);
但是,更进一步,如何动态创建@id 值,因为这将是一个根据用户选择而变化的查询。
像这样的东西(但是这个,但这不起作用):
var attributeValues:String = "@id==\"1\" || @id==\"2\" || @id==\"3\" || @id==\"4\"";
xml.Item.(descendants('ProductRange').(attributeValues).length()>0);
还有更多想法帕特里克..有人吗?
谢谢