Entradas con la etiqueta ‘nodo’

AS3 – Sustituir un XML con Replace

Publicado por Iván Gajate el 10 de febrero de 2011 en AS3, Flash | No hay comentarios »

Yo hasta ahora para modificar un nodo de un xml sencillamente lo hacía así:

miXml.item = <item>Texto modificado</item>

El problema me ha surgido cuando he querido meter el nuevo contenido dentro de un CDATA, pues me truncaba el “<” y “>” a formato html, y claro, no funcionaba.

La solución, sustituir el nodo completo con replace:

var miXml:XML = <nodos>
			<item><![CDATA[texto a modificar]]></item>
		</nodos>

var nuevoNodo:XML = new XML("<item><![CDATA[imágen1.jpg]]></item>");
miXml.replace("item", nuevoNodo);

trace(miXml);

//<nodos>
//  <item><![CDATA[imágen1.jpg]]></item>
//</nodos>

Esto viene muy bien cuando el contenido se cambia por el valor de una variable, en un bucle recorriendo todos los nodos.

AS3 – xml.getElementsByName

Publicado por Iván Gajate el 15 de abril de 2010 en AS3, Flash, Tutoriales | 2 comentarios »

La parejita de getElementById ;)

Muy útil por ejemplo para obtener todos los checkBox de un xml:

<div>
	<form id="aficiones">
		<input type="checkbox" id="chk0" name="c0">Leer</input> <br />
		<input type="checkbox" id="chk1" name="c1">Montar en bici</input> <br />
		<input type="checkbox" id="chk2" name="c2">Dormir</input> <br />
	</form>
</div>

En este caso lo que nos interesa es un listado (XMLList) con todos los nodos del mismo tipo.

function getElementsByName(data:XML, name:String):XMLList{
	return data.descendants(name);
}

// Se usaria asi:
getElementsByName(miXml, "input");

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