Bueno, Hari y a!e....�Hace mucho que no parseais cosas grandes con Flash no? :)
Vamos, desde que el objeto XML esta como c�digo nativo (FP 6) le puedes dar de comer un mega y ni pesta�ea. Yo creo que el problema no es Flash, ni mucho menos, sino el tiempo que tarda en transmitirse por la red el XML. Haciendo unas pruebas con un XML de 285Kb yo tengo los siguientes tiempos en el Flash player 7r19. El codigo lo teneis al final de este mensaje. Carga: 11.123 secs Parse: 0.028 secs Extraccion: 0.003 secs Tarda 11 segundos en descargar (ADSL 1Mb), 28ms solo en parsear la estructura y 3ms en ejecutar un XPath para extraer la informaci�n. Probando con uno m�s grande, ya en local, (copy-paste de nodos 5 veces de hamlet.xml) los tiempos siguen siendo minimos. Con un tama�o de 1.3Mb de XML, una burrada, en el parseo tarda 250ms. Y en la extracci�n 20ms. Todo este pedazo de XML en memoria son 4.5Mb, tampoco demasiado. As� que en este caso la barrera no est� en el parseo, ni en la memoria, sino en la transmisi�n por red del fichero. Asi que no os metais con el pobre Flash, que hace el trabajo de p**a madre ;P La soluci�n a un XML grande entonces pasa por reducir el tama�o del fichero. Esto lo puedes hacer de 2 maneras: 1- Quitando el espacio en blanco, cambios de linea y tabulaciones... 2- Comprimiendolo. (http://www.strille.net/tutorials/FlashXMLCompressor/index.php) Aunque me temo que el segundo metodo subiria mucho los tiempos de proceso en la descompresi�n. Aqu� va el codigo de test: <code> import com.xfactorstudio.xml.xpath.XPath; var diff:Number; var registros = new Array(); var hamlet:XML = new XML(); hamlet.ignoreWhite = true; hamlet.onData = function(raw){ registros.push(getTimer()); this.parseXML(raw); registros.push(getTimer()); this.onLoad(true); registros.push(getTimer()); mostrarTiempos(); } hamlet.onLoad = function(){ var nodos:Array = XPath.selectNodes(this,"/PLAY/PERSONAE/PERSONA"); trace("Encontrados "+nodos.length+" personajes"); } function mostrarTiempos(){ trace("Tiempos en segundos"); trace("Carga: "+(registros[0]-diff)/1000); trace("Parse: "+(registros[1]-registros[0])/1000); trace("Extraccion: "+(registros[2]-registros[1])/1000); } diff = getTimer(); hamlet.load("http://www.ibiblio.org/xml/examples/shakespeare/hamlet.xml"); </code> Un saludo, Joseba Alonso www.5dms.com www.sidedev.net ---------------------------------- Lista ASNativos:[email protected] http://www.5dms.com/listas ----------------------------------

