como va,,, por lo que veo estas haciendo bien el filtrado, el tema es cuando el filtro devuelve solo un resultado. Devolver te devuelve un nodo cuando filtras @tipo=='2', lo que imagino que te debe suceder es que al tracear el xmllist no te muestra nada, eso es porque solo hay un nodo y es de contenido vacio.
Proba estos ejemplos
nodo vacio:
Código ActionScript :
var xml:XML = <data><image src="1.jpg" desc="Imagen1" tipo="1"/>
<image src="2.jpg" desc="Imagen2" tipo="1"/>
<image src="3.jpg" desc="Imagen1" tipo="2"/></data>;
trace(xml..image.(@tipo=='2').length()); // devuelve 1, asi que hay al menos un nodo
trace(xml..image.(@tipo=='2')); //no devuelve nada xq el unico nodo que hay esta vacio
var xmllist:XMLList = xml..image.(@tipo=='2');
for each(var c:XML in xmllist)
{
trace(c.@src + " " + c.@desc + " " + c.@tipo); //devuelve 3.jpg Imagen1 2
}
nodo con contenido:
Código ActionScript :
var xml:XML = <data><image src="1.jpg" desc="Imagen1" tipo="1"/>
<image src="2.jpg" desc="Imagen2" tipo="1"/>
<image src="3.jpg" desc="Imagen1" tipo="2"><nombre>foto.jpg</nombre></image></data>;
trace(xml..image.(@tipo=='2').length()); // devuelve 1, asi que hay al menos un nodo
trace(xml..image.(@tipo=='2')); //aca si devuelve algo visible xq el unico nodo que hay tiene contenido
var xmllist:XMLList = xml..image.(@tipo=='2');
for each(var c:XML in xmllist)
{
trace(c.@src + " " + c.@desc + " " + c.@tipo); //devuelve 3.jpg Imagen1 2
}
Y si por ejemplo,,, vos quere formar un nuevo xml a partir del xmllist,,, seria asi:
Código ActionScript :
var xml:XML = <data><image src="1.jpg" desc="Imagen1" tipo="1"/>
<image src="2.jpg" desc="Imagen2" tipo="1"/>
<image src="3.jpg" desc="Imagen1" tipo="2"><nombre>foto.jpg</nombre></image></data>;
trace(xml..image.(@tipo=='2').length()); // devuelve 1, asi que hay al menos un nodo
trace(xml..image.(@tipo=='2')); //aca si devuelve algo visible xq el unico nodo que hay tiene contenido
var xmllist:XMLList = xml..image.(@tipo=='2');
var xml2:XML = new XML('<data>' + xmllist.toXMLString() + "</data>");
trace(xml2.toXMLString());
Con esto ultimo habras descubierto que lo mejor para obtener el contenido real de un xml o xmllist es utilizar el metodo toXMLString(). jeje
espero que te haya sido de ayuda
Saludos
eXe