Estoy intentando cargar un archivo XML en Flash, en una caja de texto dinámica y que cargue todos los nodos seguidos, pero no sé como hacerlo... los ejemplos vistos en Cristalab y otros lugares son diferentes.
Este sería el XML a importar (vamos, la estructura):
Código XML :
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> <channel> <title>Ofertas</title> <link>http://somewere</link> <description>Ofertas</description> <lastBuildDate>Jue, 03 Abr 2010 06:34:00 GMT+1</lastBuildDate> <item> <title>PRIMAVERA OFERTA EXCEPCIONAL</title> <link>PRIMAVERA OFERTA EXCEPCIONAL</link> <description><![CDATA[Para estrenar esta nueva etapa de la casa Rural, daremos desayuno y cena incluido en nuestros precios de reservas habitual.]]></description> <precio>50</precio> <fecha_inicio>29/06/2010</fecha_inicio> <fecha_fin>27/08/2010</fecha_fin> </item> <item> <title>OFERTA DE VERANO</title> <link>OFERTA DE VERANO</link> <description><![CDATA[Esta es una OFERTA de verano excepcional. <br>Con la reserva de 1 habitacion doble, gratis 1 sesion de SPA. (maximo 2 personas)]]></description> <precio>140</precio> <fecha_inicio>22/06/2010</fecha_inicio> <fecha_fin>27/06/2010</fecha_fin> </item> </channel> </rss>
Los nodos podrían ser tantos como registros tenga la base de datos desde donde se genera este archivo XML. No se como montar esto para que me lea todos los nodos y los ponga en la misma caja de texto (separados por saltos de linea). (con un 'for' e [i++] supongo pero no me sale nada)
Lo que tengo hasta ahora, y que me funciona es lo siguiente....
Código :
System.useCodepage = true; //Defino variables para recorer las noticias de forma automática var idNoticia:Number idNoticia=4; var nodos:Number nodos=0; var portada_rss = new XML(); portada_rss.ignoreWhite = true; portada_rss.onLoad = function (leido){ if (leido){ cargaTxtXML(); } else{ texto="Error al cargar los contenidos RSS. Carga la página de nuevo"; } } // Leo el XML portada_rss.load("xml/ofertas.xml"); //No se aun porqué, pero al pasarle la variable idNoticia a la funcion siguiente hay que hacerlo con guion osea "_idNoticia" function cargaTxtXML(_idNoticia){ ag=portada_rss.firstChild.childNodes[0].childNodes[idNoticia]//acorto un poco la línea de lectura //Con el siguiente código leo el primer nodo correctamente texto1="<b><font color='#000000' size='18'>"+ag.childNodes[0].firstChild.nodeValue+"</font></b><br><font color='#990000' size='10'><b> Del "+ag.childNodes[4].firstChild.nodeValue+" al "+ag.childNodes[5].firstChild.nodeValue+"</b></font><br><font color='#333333' size='12'>"+ag.childNodes[2].firstChild.nodeValue+"</font><br><font color='#ff9900' size='20'><b>"+ag.childNodes[3].firstChild.nodeValue+"€</b>"; //asigno al la caja de texto dinámica de flash (oferta1) lo obtenido del XML oferta1=texto1; }
Por último decir que para este caso, tengo un botón que hace saltar hacia el siguiente nodo y cargarlo en la caja de texto dinámica. Está bien para ir viendo los registros 1 a 1 pero mi cliente quiere tenenerlos todos apilados uno debajo del otro y con scroll.
Código :
siguiente_btn.onRelease=function(){ //comprobando si existe el siguiente elemento [noticia] if(portada_rss.firstChild.childNodes[0].childNodes[idNoticia+1] != null){//retringue a avanzar solo si hay una [noticia] siguiente _idNoticia++; //incrementado en uno el indice cargaTxtXML(_idNoticia); //recuperando y mostrando los datos } }
Una ayudita rápida de esos gurus....