だから私はこの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") );
ただし、両方の id="1" && "2" であるため、項目 "ccc" が表示されない理由がわかります。
したがって、正しいクエリがここにあるべきかどうか、そして子孫が正しい手法である場合でも、実際にはわかりません。
これらの値の組み合わせは無限にあるため ("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);
パトリック.. 誰か?
ありがとう