AS3 – xml.getElementById

Publicado por Iván Gajate el 13 de abril de 2010 en AS3, Flash

Si tenemos un xml con etiquetas anidadas como esta:

<contenedor>
	<caja>
		<item id="expediente1">
			Contenido del expediente 1
		</item>
	</caja>
	<caja>
		<item id="expediente2">
			Contenido del expediente 2
		</item>
	</caja>
</contenedor>

Y queremos acceder directamente al nodo <item id=”expediente1”> podemos hacerlo con esta línea de E4X:

miXml.descendants().(hasOwnProperty("@id") && @id == "expediente1")[0]

Es fácil de entender, nos devolverá un XMList con todos los nodos que tengan el atributo “id”  y que id==”expediente1”. Y de ese nos quedamos con el primero.

Podemos meterla en una función para que sea más cómoda de usar:

function getElementById(data:XML, id:String):XML{
	return data.descendants().(hasOwnProperty("@id") && @id==id)[0];
}

// Se usaria asi:
getElementById(miXml, "expediente1");

La solución me la ha dado Joseba en la lista de AsNativos.

Este tipo de funciones las voy a ir recopilando en una clase XmlUtils.

Descargar XmlUtils.as

Descargar todo el paquete es.yporqueno

 

12 comentarios para “AS3 – xml.getElementById”

  1. Muy buena esa línea 🙂

  2. Muy interesante y la verdad es que tiene muchas posibilidades interesantes 😉