Comunidad de diseño web y desarrollo en internet online

cargar fichero .xml

Citar            
MensajeEscrito el 15 Nov 2009 08:39 pm
Hola,
deseo cargar un fichero xml y guardar los datos en vectores, lo hago de la siguiente manera:

Código :

aenunciado = new Array();
asolucion = new Array();


mixml=new XML(); 
mixml.load("enunciados_"+num_problema+".xml");
mixml.ignoreWhite=true;


mixml.onLoad=function(){

total=this.firstChild.childNodes.length;

   for (j=0; j<total; j++){
   
   aenunciado[j]=this.firstChild.childNodes[j].attributes.enunciado;
   asolucion[j]=this.firstChild.childNodes[j].attributes.solucion;
   }


   escribe_enunciado();
}


el problema que tengo es que he de llamar a la funcion escribe_enunciado, dentro de mixml.onLoad, y si hago un trace del vector aenunciado fuera de mixml.onLoad no contiene nada (obtengo undefined), si realizo el trace antes de cerrarla, entonces me muestra el valor correcto, desearia que la variable aenunciado tuviera los valores después de cerrar mixml.onload,
el fla que he hecho cambia de fichero xml y de la forma que lo tengo me da problemas al cambiar de xml.

Gracias por vuestra ayuda.

Jose.

Por jose!!!

23 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Nov 2009 12:11 pm
desearia que la variable aenunciado tuviera los valores después de cerrar mixml.onload


EL array se rellena en mixml.onload justamente porque usa los valores del XML que se han cargado para rellenarse, no entiendo la pregunta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Nov 2009 06:01 pm
El fla que estoy haciendo plantea problemas que el usuario ha de resolver.

Tiene un primer fotograma con una serie de botones, (cada uno de ellos hace referencia a un tema).

Cada botón carga un fichero xml con 20 problemas, que van pasando a medida que el usuario los resuelve correctamente, (van pasando en un segundo fotograma), deseaba cargar el xml en el código del botón y guardar los enunciados y sus soluciones en sendos arrays. (opción que habia pensado inicialmente).

Lo que hago es pasar con el botón el nombre del xml y cargarlo en el segundo fotograma.

Mi pregunta era saber si la primera opción que tenía pensada (guardar enunciados y soluciones en dos arrays en el botón) era posible.

Jose.

Por jose!!!

23 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Nov 2009 06:03 pm
Claro que es posible, una vez que lo terminas de cargar lo puedes guardar donde quieras

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Nov 2009 10:07 pm
Claro, debo de cometer algún error,

el codigo que coloco en el botón es el siguiente:

Código :

on (press){
   mouse;
   
   num_problema=1;
   aenunciado = new Array();
   asolucion = new Array();
   
   mixml=new XML(); 
   mixml.load("enunciados_"+num_problema+".xml");
   mixml.ignoreWhite=true;


   mixml.onLoad=function(){

   total=this.firstChild.childNodes.length;

   for (j=0; j<total; j++){
   
   aenunciado[j]=this.firstChild.childNodes[j].attributes.enunciado;
   asolucion[j]=this.firstChild.childNodes[j].attributes.solucion;
   }
   trace(aenunciado[1]);
   }
   trace(aenunciado[0]);

   gotoAndStop(2);
}




El primer trace me muestra el texto correcto pero el segundo trace me muestra undefined, pero no se porqué.

Jose.

Por jose!!!

23 de clabLevel



 

msie8
Citar            
MensajeEscrito el 16 Nov 2009 10:16 pm
Porque está fuera del onLoad, hasta que el onLoad no se ejecute, no hay XML para mostrar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Nov 2009 10:38 pm
¿Y que he de hacer para ejecutar de nuevo el onLoad?, ¿he de llamar a la función?, he probado escribiendo

mixml.onLoad();

sin resultado.

Por jose!!!

23 de clabLevel



 

msie8
Citar            
MensajeEscrito el 17 Nov 2009 11:32 am
Los callback de carga asíncrona (tanto para Xml como para LoadVars) se ejecutan cuando una información se ha cargado, es decir nos dan la certeza de que algo ha sido cargado, por eso no podemos acceder a esa info hasta que no esté disponible. Dentro del onLoad puedes setear variables globales, etc. Un par de cosas que puedes hacer:

- No pongas todo en el onPress de un botón, pon la rutina de carga y parseo del XML en una función
- Desde el onLoad puedes acceder a los datos que trae el XML o llamar a otra función, etc

Te llevará un tiempo entender el flujo y los que llamamos callbacks (eventos que ocurren cuando se cumple determinada condición), pero es básico para programación asíncrona

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 17 Nov 2009 06:48 pm
Probaré lo que me dices.

Muy agradecido por la respuesta.

Jose.

Por jose!!!

23 de clabLevel



 

msie8

 

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