U kunt de ronde-haakjeoperatoren, ( en )) gebruiken om elementen met een specifieke elementnaam of kenmerkwaarde te filteren. Bekijk het volgende XML-object:
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>
De volgende expressies zijn allemaal geldig:
x.employee.(lastName == "McGee"): dit is het tweede knooppunt employee.
x.employee.(lastName == "McGee").firstName: dit is de eigenschap firstName van het tweede knooppunt employee.
x.employee.(lastName == "McGee").@id: dit is de waarde van het kenmerk id van het tweede knooppunt employee.
x.employee.(@id == 347): het eerste knooppunt employee.
x.employee.(@id == 347).lastName: dit is de eigenschap lastName van het eerste knooppunt employee.
x.employee.(@id > 300): dit is een XMLList met beide eigenschappen employee.
x.employee.(position.toString().search("analyst") > -1): dit is een XMLList met beide eigenschappen position.
Als u probeert te filteren op kenmerken of elementen die niet bestaan, treedt een uitzondering op. De laatste regel van de volgende code genereert bijvoorbeeld een fout omdat er geen kenmerk id bestaat in het tweede element p:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(@id == '123'));
Op dezelfde manier genereert de laatste regel van de volgende code een fout omdat er geen eigenschap b bestaat van het tweede element p:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(b == 'Bob'));
U kunt deze fouten vermijden door de eigenschappen die overeenkomende kenmerken of elementen hebben, te identificeren met de methoden attribute() en elements(), zoals in de volgende code:
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'));
U kunt ook de methode hasOwnProperty() gebruiken, zoals in de volgende code:
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'));