Вы можете просто выбрать все узлы с определенным значением, например так:
node.(@attribute == "value")
В качестве примера, это будет выводить только те узлы, где side
установлено как "left"
:
var xml:XML =
<list>
<node side="left">hi</node>
<node side="left">there</node>
<node side="right">marty</node>
</list>;
trace(xml.node.(@side == "left"));
Выход:
<node side="left">hi</node>
<node side="left">there</node>
Вы можете назначить это XMLList следующим образом:
var list:XMLList = xml.node.(@side == "left");
А затем выполните итерацию, как обычно:
var i:XML;
for each(i in list)
{
trace(i);
}
В ответ на ваш комментарий вопрос:
Вы можете использовать свойство length()
, чтобы определить, сколько узлов было найдено, а их сторона установлена слева, например:
var xml:XML =
<list>
<node side="left">hi</node>
<node side="left">there</node>
<node side="right">marty</node>
</list>;
var list:XMLList = xml.node.(@side == "left");
// check if a node was found
if(list.length() > 0)
{
doStuff();
}
function doStuff():void
{
trace("a node had its side set as left");
}