XMLList Referencia al XML Original

Publicado por Iván Gajate el 9 de febrero de 2012 en AS3, Flash

Cuando hacemos una consulta en un XML nos devuelve un XMLList con los resultados.
Sin embargo, ese listado no está desvinculado del xml original, sino que son referencias al mismo, es decir, que si modificamos los elementos de ese XMLList y luego trazamos el XML del que ha salido, veremos el resultado de dicha modificación.

// XML inicial
var miXml:XML = <escena>
			<obj>Algo</obj>
			<obj>Algo</obj>
			<obj>Algo</obj>
			<contenedor>
				<obj>Algo</obj>
				<obj>Algo</obj>
			</contenedor>
		</escena>


// Listado de los nodos "obj" incluidos los anidados
var objetos:XMLList = miXml..obj;

// Recorro el listado sustituyendo su valor por otro.
// Modifico el XMLList, pero son referencias al XML de origen.
for each(var obj:XML in objetos){
	obj.replace(0, "Otra cosa");
}

// Trazo el XML original. Se han modificado los valores.
trace(miXml);

/*
<escena>
  <obj>Otra cosa</obj>
  <obj>Otra cosa</obj>
  <obj>Otra cosa</obj>
  <contenedor>
    <obj>Otra cosa</obj>
    <obj>Otra cosa</obj>
  </contenedor>
</escena>

*/

 

Los comentarios están cerrados.