Comunidad de diseño web y desarrollo en internet online

Cargar XML y devolver Objeto (en aplicación en 3 capas)

Citar            
MensajeEscrito el 22 May 2010 12:34 pm
Buenas, describo el problema.

Estoy desarrollando una aplicación en tres capas, presentacion, lógica, y persistencia.

El objetivo es cargar en la capa de persistencia el XML, procesarlo y con esos datos construir un objeto
y enviarselo a la lógica.

El problema radica en que hay que esperar a que el xml se cargue y despues construya el objeto pero no lo hace y llega al return cuando los datos no estan aun cargados por lo tanto devuelve vacio.

Uso:
loader.addEventListener(Event.COMPLETE, parseXML)

pero claro parseXML es otra funcion y no espera a que finalice llegando al return sin que este el objeto construido.

Bueno es dificil de explicarme bien pero si a alguien le suena de lo que estoy hablando lo desarrollo mas.

Gracias.

Por balkar

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 May 2010 10:02 pm
existen muchos frk que te pueden solucionar ese problema tanto para flex como para flash

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 May 2010 12:37 am
para cargar un archivo xml externo puedes probar con esto:

Código ActionScript :

import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
var externalXML:XML;
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("xmlFile.xml"); //DEBES CAMBIER EL NOMBRE Y UBICACION DE TU ARCHIVO
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);
function onComplete(event:Event):void
{
var loader:URLLoader = event.target as URLLoader;
if (loader != null)
{
externalXML = new XML(loader.data);
trace(externalXML.toXMLString());
}
else
{
trace("el XML se cargo con exito!");
}
}


espero te sirva.

saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

chrome
Citar            
MensajeEscrito el 23 May 2010 09:40 am

xcom escribió:

existen muchos frk que te pueden solucionar ese problema tanto para flex como para flash


perdona pero no se a que te refieres con frk, si me concretas un poco o me das nombres de lo agradezco.

Por balkar

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 May 2010 09:51 am

bubudrc escribió:

para cargar un archivo xml externo puedes probar con esto:

Código ActionScript :

import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
var externalXML:XML;
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("xmlFile.xml"); //DEBES CAMBIER EL NOMBRE Y UBICACION DE TU ARCHIVO
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);
function onComplete(event:Event):void
{
var loader:URLLoader = event.target as URLLoader;
if (loader != null)
{
externalXML = new XML(loader.data);
trace(externalXML.toXMLString());
}
else
{
trace("el XML se cargo con exito!");
}
}


espero te sirva.

saludos


Si, gracias por responder es exactamente ese código el que estoy usando, bueno mayormente pero el problema es que ahora con ese externalXML imaginemos que quiero construir un objeto de tipo usuario por ejemplo y DEVOLVÉRSELO cuando lo cree a otra clase que es la que hace la llamada.

Pongamos que este codigo para cargar el xml estaría en la clase persistencia y la clase logica instancia persistencia y hace una llamada y espera que se le pase un objeto de tipo usuario. Es lo que no se como hacer o si es posible si quiera porque no puedo sincronizar las cosas.

Una solución un poco chapuza podría ser mandar un evento desde persistencia a logica que le indique que el objeto ya ha sido creado y que solo entonces puede pedirlo. Pero mi idea era solo una llamada sería necesario que fuese síncrono y quede a la espera de la respuesta.

Por balkar

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 May 2010 06:53 am

balkar escribió:

Una solución un poco chapuza podría ser mandar un evento desde persistencia a logica que le indique que el objeto ya ha sido creado y que solo entonces puede pedirlo. Pero mi idea era solo una llamada sería necesario que fuese síncrono y quede a la espera de la respuesta.

No me parece "chapuza",pero es que, además, me temo que todas las llamadas a "load" son siempre asíncronas -y no sólo en AS-

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 May 2010 09:18 am

Eliseo2 escribió:

balkar escribió:

Una solución un poco chapuza podría ser mandar un evento desde persistencia a logica que le indique que el objeto ya ha sido creado y que solo entonces puede pedirlo. Pero mi idea era solo una llamada sería necesario que fuese síncrono y quede a la espera de la respuesta.

No me parece "chapuza",pero es que, además, me temo que todas las llamadas a "load" son siempre asíncronas -y no sólo en AS-


Si, al final creo que me decantaré por hacerlo así.

Otra opción que se me ha ocurrido podría ser cargar los xml necesarios antes de arrancar la aplicación voy a investigar como se haría.

Por balkar

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 May 2010 08:28 pm
Estos son unos de los mas potentes para flash

http://www.gaiaflashframework.com/
http://www.robotlegs.org/examples/

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 May 2010 09:06 pm

xcom escribió:

Estos son unos de los mas potentes para flash

http://www.gaiaflashframework.com/
http://www.robotlegs.org/examples/


Gracias me pongo a mirarlo y saber de que va, no sabía de su existencia. Pinta bien.

Por balkar

10 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.