cargar datos en flash desde un xml externo
Cuando trabajamos con aplicaciones en flash y queremos que conecten con bases de datos para mostrar catálogos de productos, noticias, etc., la mejor forma de hacerlo es mediante el paso de mensajes en formato xml. Leemos de servicios web correctamente formateados en xml, y después mostraremos los datos según nos convenga en la aplicación flash.
Partimos de un archivo xml correctamente formateado, bien estático y alojado en cualquier carpeta del servidor, bien una url a una pasarela php que previamente lea los datos de una base de datos y después los muestre en xml. Vamos a necesitar tres cosas: un objeto LoadVars, un objeto XML y conocer la estructura de los nodos xml para poderlos recorrer correctamente.
LoadVars se usará para enviar una petición http a la url de la pasarela, y XML para recoger los datos que devolverá la petición LoadVars. En nuestro caso, partiendo de la estructura XML mencionada en la publicación arriba enlazada, recorreremos cada nodo (childnode), rescatando sus atributos id, name y special_powers.
El código quedará tal que así:
/* clase para formateado de datos en xml
* @author Jorge Albaladejo Pomares [jorge@abc-webs.net]
* @license Creative Commons License http://creativecommons.org/licenses/by-sa/3.0/
*/
// definimos variables
loadvars = new LoadVars();
readvars = new XML();
urlxml = "http://localhost/test.php"
// preparamos las matrices de datos
readvars.ignoreWhite = true;
ids = Array();
names = Array();
special_powers = Array();
// realiza la peticion y para la película
loadvars.sendAndLoad(urlxml, readvars, "GET");
_root.stop();
//
//método para cuando carguen los datos
readvars.onLoad = function(success) {
trace ("lectura correcta");
if (success) {
long = readvars.firstChild.childNodes.length;
trace(long);
//Llenar los arrays con los atributos de cada nodo
for (i=0; i
ids[i] = readvars.firstChild.childNodes[i].attributes.id;
names[i] = readvars.firstChild.childNodes[i].attributes.name;
special_powers[i] = readvars.firstChild.childNodes[i].attributes.special_powers;
trace(ids[i] + ‘ : ‘ + names[i] + ‘, ‘ + special_powers[i]);
}
} else {
trace(”No se pudo cargar el XML para los datos de idioma”);
}
}; //fin del método onload
Deja tu comentario
Si tu comentario no aparece inmediatamente no te preocupes, los comentarios se moderan antes de publicarlos por problemas con los spammers. Cuando hayas enviado varios comentarios y seas una persona de confianza, tus comentarios aparecerán inmediatamente sin necesidad de moderación.






