Sie können die Klammernoperatoren ( und ) verwenden, um Elemente mit einem bestimmten Elementnamen oder Attributwert zu filtern. Gegeben ist das folgende XML-Objekt:
var x:XML =
<employeeList>
<employee id="347">
<lastName>Zmed</lastName>
<firstName>Sue</firstName>
<position>Data analyst</position>
</employee>
<employee id="348">
<lastName>McGee</lastName>
<firstName>Chuck</firstName>
<position>Jr. data analyst</position>
</employee>
</employeeList>
Die folgenden Ausdrücke sind alle gültig:
x.employee.(lastName == "McGee") – Dies ist der zweite employee-Knoten.
x.employee.(lastName == "McGee").firstName – Dies ist die firstName-Eigenschaft des zweiten employee-Knotens.
x.employee.(lastName == "McGee").@id – Dies ist der Wert des id-Attributs des zweiten employee-Knotens.
x.employee.(@id == 347) – Der erste employee-Knoten.
x.employee.(@id == 347).lastName – Dies ist die lastName-Eigenschaft des ersten employee-Knotens.
x.employee.(@id > 300) – Dies ist ein XMLList-Objekt mit beiden employee-Eigenschaften.
x.employee.(position.toString().search("analyst") > -1) – Dies ist ein XMLList-Objekt mit beiden position-Eigenschaften.
Wenn Sie versuchen, anhand von Attributen oder Elementen zu filtern, die nicht vorhanden sind, wird eine Ausnahme ausgegeben. Die letzte Zeile des folgenden Codes erzeugt beispielsweise einen Fehler, da im zweiten p-Element kein id-Attribut vorhanden ist:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(@id == '123'));
Analog erzeugt die letzte Zeile des folgenden Codes einen Fehler, da keine b-Eigenschaft des zweiten p-Elements vorhanden ist:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(b == 'Bob'));
Um solche Fehler zu vermeiden, können Sie Eigenschaften mit übereinstimmenden Attributen und Elementen angeben, indem Sie wie im folgenden Code die Methoden attribute() und elements() verwenden:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(attribute('id') == '123'));
trace(doc.p.(elements('b') == 'Bob'));
Sie können auch wie im folgenden Code die hasOwnProperty()-Methode verwenden:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(hasOwnProperty('@id') && @id == '123'));
trace(doc.p.(hasOwnProperty('b') && b == 'Bob'));