Lectura de XML desde Flash (ActionScript)
Cuando desarrollamos aplicaciones o animaciones con Flash, nos encontramos muchas veces con la necesidad de interactuar con Bases de Datos para la carga de información en nuestras películas o MovieClips. Existen varias maneras de interactuar bases de datos con Flash, entre las cuales esta la posibilidad de generar un XML con un lenguaje de servidor como PHP o ASP y luego Parsearlo (leerlo) desde Flash, otra de las alternativas es con LoadVars. En este caso veremos como hacerlo con la primera de las alternativas (XML) y dejaremos la segunda para un próximo post.
Si necesitas saber como generar un XML desde un lenguaje de servidor mira este post.
Suponiendo que la estructura de nuestro XML tenga esta forma:
<personas> <persona apellido="PEREZ" nombre="JUAN" edad="24" fecha="10/10/1998" /> <persona apellido="GONZALEZ" nombre="PEDRO" edad="18" fecha="05/09/1995" /> <persona apellido="JIMENEZ" nombre="MIGUEL" edad="36" fecha="01/12/2005" /> </personas>
El código para la lectura del XML en ActionScript sería de la siguiente manera; pongo el código y despues paso a explicar cada una de las líneas:
function personas(){
System.useCodepage=true;
x=new XML();
x.ignoreWhite=true;
x.load('Personas.xml');
x.onLoad=function(paso){
if(paso){
apellido=new Array();
nombre=new Array();
edad=new Array();
fecha=new Array();
aPersonas=this.firstChild.childNodes;
vTotal = aPersonas.length;
for (i=0;i<vTotal;i++){
if (aPersonas[i].nodeName=="persona"){
apellido.push(aPersonas[i].attributes.apellido);
nombre.push(aPersonas[i].attributes.nombre);
edad.push(aPersonas[i].attributes.edad);
fecha.push(aPersonas[i].attributes.fecha);
}
}//Cierre del for
}
Explicación del código anterior:
System.useCodepage=true;
Esta línea es necesaria para que Flash Player interprete el texto externo, en nuestro caso nuestro XML, empleando la página de códigos tradicional del sistema operativo en el que se ejecuta Flash Player. Explicación más detallada en el sitio oficial de Adobe.
x=new XML(); x.ignoreWhite=true;
Declaramos la varible x como objeto XML() y transformamos los espacios en blancos en etiquetas, esta última es importante ponerla, ya que sin ella nos parsearía de modo incorrecto.
x.load('Personas.xml');
cargamos en nuestra variable x el archivo XML. Tener presente el Path o la ruta de nuestro archivo, ejemplo: x.load(‘home/archivo/xml/Personas.xml’).
x.onLoad=function(paso){
if(paso){
apellido=new Array();
nombre=new Array();
edad=new Array();
fecha=new Array();
comprobamos si la carga del archivo se produjo correctamente, acto seguido creamos los distintos arrays que necesitaremos para la carga de datos.
aPersonas=this.firstChild.childNodes; vTotal = aPersonas.length;
asignamos a aPersonas los primeros nodos de nuestro arbol y pasamos a vTotal la cantidad de nodos para luego realizar un bucle para ir cargando en nuestros arrays que creamos anteriormente.
for (i=0;i<vTotal;i++){
if (aPersonas[i].nodeName=="persona"){
apellido.push(aPersonas[i].attributes.apellido);
nombre.push(aPersonas[i].attributes.nombre);
edad.push(aPersonas[i].attributes.edad);
fecha.push(aPersonas[i].attributes.fecha);
}
}//Cierre del for
como dijimos anteriormente generamos el bucle para ir cargando en los arrays los datos que nos trae nuestro XML. Con for (i=0;i<vTotal;i++) generamos el bucle para contemplar la totalidad de los nodos. De esta forma, if (aPersonas[i].nodeName==”persona”), nos aseguramos que el nodo que estamos trabajando sea “persona”. Y con apellido.push(aPersonas[i].attributes.apellido); vamos cargando los datos de XML a sus respectivos arrays, notese que trabajamos con attributes para hacer referencia a un atributo especifica dentro de la estructura del XML.
De esta manera contamos con los array necesarios para trabajar con Flash y AS como más nos guste, como por ejemplo cargar en un componente grid, en inputs o labels.
Si necesitas entender un poco más de XML, dejo un tutorial creado por la gente de Adobe.
Como siempre dejanos tus comentarios, dudas o sugerencias.
También te puede Interesar
¿Disfrutaste esta entrada? Por qué no dejas un comentario abajo y continúas la conversación, o te suscribes a mi feed y obtienes artículos como este enviados a tu lector de feeds.
Comentarios
[...] la facilidad que nos brinda XML para diferentes plataformas de trabajo, (como lo muestro tambien en este post), me puse a buscar alguna clase que me permita este trabajo en PHP y me encontré con Magpierss, [...]
Excelente tutorial, mis felicitaciones, me funciono de 100 para un proyecto que estoy dessarrollando, mil gracias.
el for tiene un error i<, podrias explicar cual seria la sentencia del for?
i=0; ????; vTotal++..??
Hola me ha gustado este tema, tengo una inquietud, mira yo trabajo streaming para radios vasandome en un reproductor flash, lo que me interesa ahora esa sacar los usuarios conectados que se despliega en un xml, el proceso que hago aca es con un servidor wowza media server, no se si me puedas ayudar, de verdad no se nada de flash todo lo que he avanzado es por ayuda de mis amigos, pero esta parte ellos no sabes.



Esta excelente tu tuto, solo que ahora tengo un problema.
El dato cargado del xml lo quiero desplegar en un texto dinamico que puedo hacer?