Comunidad de diseño web y desarrollo en internet online

Cargar XML en Flash

Citar            
MensajeEscrito el 18 Jun 2010 10:22 am
Buenas.
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) :oops:

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. :roll:

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.... :shock: :shock: :shock:

Por pitger

Claber

201 de clabLevel



Genero:Masculino  

Cáceres

firefox
Citar            
MensajeEscrito el 21 Jun 2010 09:14 pm
Bueno... encontré la solución. Lo tenía casí ahí... pero me faltaba 'darle a la tecla exacta':

Código :

System.useCodepage = true; 
//Defino variables para recorer las noticias de forma automática
var idNoticia:Number
idNoticia=4; // Esto es así porque los 3 primeros nodos son de información

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";
   }
}
// Leer 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){
   
   var i:Number = 0;

   nodos =portada_rss.firstChild.childNodes[0].childNodes[3].firstChild.nodeValue;//Esto son el total de nodos.
   var my_array:Array = new Array(); 
   for (i= 0; i < nodos; i++) { 
      my_array +="<b><font color='#000000' size='18'>"+portada_rss.firstChild.childNodes[0].childNodes[idNoticia+i].childNodes[0].firstChild.nodeValue+"</font></b><br><font color='#990000' size='10'><b> Del "+portada_rss.firstChild.childNodes[0].childNodes[idNoticia+i].childNodes[4].firstChild.nodeValue+" al "+portada_rss.firstChild.childNodes[0].childNodes[idNoticia+i].childNodes[5].firstChild.nodeValue+"</b></font><br><font color='#333333' size='12'>"+portada_rss.firstChild.childNodes[0].childNodes[idNoticia+i].childNodes[2].firstChild.nodeValue+"</font><br><font color='#ff9900' size='20'><b>"+portada_rss.firstChild.childNodes[0].childNodes[idNoticia+i].childNodes[3].firstChild.nodeValue+"€</b></font><br>-----------------------------------------------------------------<br>";
       
   }
   oferta1=my_array;
}


...era facil, pero tanto nodo xml me liaba... además, aquí no trabajo con los 'atributos' de los nodos, como aparece en este tutorial en cristalab ya que poner un campo memo de una base de datos con mucha información en un atributo de un nodo no era 'viable'... esto era lo que me hizo perderme.

En fin, gracias al menos a los que entrásteis para ver si podíais hechar un cable.

*por cierto, aun queda un fleco por resolver, con ese código lo que me devuelve en el campo de texto es algo tal que así:

undefined
*oferta1 OK*
-----------------
*oferta2 OK*
-----------------
*ofertaN OK*
-----------------

... no entiendo de dónde sale ese 'undefined'. ¿ideas?

Por pitger

Claber

201 de clabLevel



Genero:Masculino  

Cáceres

firefox
Citar            
MensajeEscrito el 04 May 2011 07:54 pm
:D creo entender un pcoo soy nuevo en esto pero me podrias explica porke el function cargaTxtXML(_idNoticia){

lo ke yo quiero hacer es algo similar mira te explico : tengo un archivo xml
hero XML no parece tener ninguna información de estilo asociada. Se muestra debajo el árbol del documento.
<cfdi:Comprobante xsi:schemaLocation="http://www.sat.gob.mx/cfd/3 http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv3.xsd" version="3.0" folio="1" fecha="2011-04-29T19:11:39" sello="nQKAxjZhGtO6TjDK3jQKndgwMJJIeRruCTnwvNy4BYVbDB2w8lhMfqksvthlasezlWyoBkUS3moL9dKCN5Gk1olZJipgKAr0OynYIuKz8YT8xGdegZYxJqxblT9jU22fXhkGo4q+BTpwRjx4i2YhPs2//WBjRFkCK6Rn6Xe5BUI=" formaDePago="Pago en una sola exhibición" noCertificado="00001000000103342181" certificado="MIIEDzCCAvegAwIBAgIUMDAwMDEwMDAwMDAxMDMzNDIxODEwDQYJKoZIhvcNAQEFBQAwggE2MTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExHzAdBgkqhkiG9w0BCQEWEGFjb2RzQHNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEzARBgNVBAcMCkN1YXVodGVtb2MxMzAxBgkqhkiG9w0BCQIMJFJlc3BvbnNhYmxlOiBGZXJuYW5kbyBNYXJ0w61uZXogQ29zczAeFw0xMTA0MTgxNzAzMDhaFw0xMzA0MTcxNzAzMDhaMIGvMRswGQYDVQQDExJWSVNUQSBMVVggU0EgREUgQ1YxGzAZBgNVBCkTElZJU1RBIExVWCBTQSBERSBDVjEbMBkGA1UEChMSVklTVEEgTFVYIFNBIERFIENWMSUwIwYDVQQtExxWTFUwNDExMDQ4QTcgLyBSRVZHNjgwMzExOUw3MR4wHAYDVQQFExUgLyBSRVZHNjgwMzExSERGWU5CMDkxDzANBgNVBAsTBm1hdHJpejCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAx8VIVRKvzlmXzTiUEeGM2cyPGrYQ5uch/xn7v/JFDvwB4axNRHpDGf2TXL8EA2/D7mCGWkAsOhxwNKOAiKMx203ZMDFOoV3M3r7LqSs3U+55V+Gup26FBeD7Jm+44+08jg1vvWFdaH61x7zWUKb+qr190f9XcRIPr+Yj4/EeYfMCAwEAAaMdMBswDAYDVR0TAQH/BAIwADALBgNVHQ8EBAMCBsAwDQYJKoZIhvcNAQEFBQADggEBADpyfBXVJ/7uwUQkhK9t+QWkTM0VEQcrfpDdePATPxByA51cszDVLI49tZtkyDsYawnS+t4/q+ozDr6xV6Gm57v521d1Vrelu9j3ado5P74otB9OCgZXUqrsneHIRObYcgWKu0TItfJp/o4z/bUyMfWTBXG9vqrwsnMooSZMzHsCJZhcctEeCmPVnEVN2syFQH1AvfLq62/y7Z4NOuh6zCDK7a9ix+LMMj/HgSgzssVKAPp56VsIcIZvpP2piTFuHmTfhYwo9D91xgC6FunpNVrx9nc7gBtW7BKPH/AvoDXqJe/wBtbF9IpkY/lqpksN3WceV3jLP2PbnttFCpPOcm8=" subTotal="29136.80" descuento="0.00" total="33798.69" tipoDeComprobante="ingreso"><cfdi:Emisor rfc="VLU0411048A7" nombre="Vista Lux, S.A. de C.V."><cfdi:DomicilioFiscal calle="Carretera Federal México Toluca" noExterior="1725" noInterior="A-30" colonia="Granjas de Palo Alto" localidad="Distrito Federal" municipio="Cuajimalpa" estado="Distrito Federal" pais="México" codigoPostal="05118"/></cfdi:Emisor><cfdi:Receptor rfc="FRI981116A41" nombre="FUNDACION DE REHABILITACION INFANTIL TELETON, A. C."><cfdi:Domicilio calle="AVENIDA SIGLO XXI CARRETERA MEXICO-LEON" noExterior="1400" colonia="PREDIO LOS SAUCES" localidad="MEXICO" municipio="IRAPUATO" estado="Guanajuato" pais="México" codigoPostal="36547"/></cfdi:Receptor><cfdi:Conceptos><cfdi:Concepto cantidad="1.000000" unidad="Pieza" noIdentificacion="2" descripcion="PUERTA DE PVC HOJA ABATIBLE CON PANEL BLANCO DE 745mm DE ANCHO POR 2420mm DE ALTO" valorUnitario="4637.120000" importe="4637.120000"/><cfdi:Concepto cantidad="1.000000" unidad="Pieza" noIdentificacion="2" descripcion="PUERTA DE PVC HOJA ABATIBLE CON PANEL BLANCO DE 735mm DE ANCHO POR 2425mm DE ALTO" valorUnitario="4622.010000" importe="4622.010000"/><cfdi:Concepto cantidad="1.000000" unidad="Pieza" noIdentificacion="2" descripcion="PUERTA DE PVC HOJA ABATIBLE CON PANEL BLANCO DE 740mm DE ANCHO POR 2400mm DE ALTO" valorUnitario="4609.040000" importe="4609.040000"/><cfdi:Concepto cantidad="1.000000" unidad="Pieza" noIdentificacion="2" descripcion="PUERTA DE PVC HOJA ABATIBLE CON PANEL BLANCO DE 1170mm DE ANCHO POR 2420mm DE ALTO" valorUnitario="5472.660000" importe="5472.660000"/><cfdi:Concepto cantidad="1.000000" unidad="Pieza" noIdentificacion="3" descripcion="CANCEL DE PVC 3 HOJAS ABATIBLES CON PANEL BLANCO DE 2455mm DE ANCHO POR 2333mm DE ALTO" valorUnitario="9795.970000" importe="9795.970000"/></cfdi:Conceptos><cfdi:Impuestos totalImpuestosTrasladados="4661.89"><cfdi:Traslados><cfdi:Traslado impuesto="IVA" tasa="16.0000" importe="4661.89"/></cfdi:Traslados></cfdi:Impuestos><cfdi:Complemento><tfd:TimbreFiscalDigital version="1.0" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/TimbreFiscalDigital/TimbreFiscalDigital.xsd" UUID="FC5B8DB9-6AD4-4E62-84F5-50EB265224FB" FechaTimbrado="2011-04-29T19:11:40" selloCFD="nQKAxjZhGtO6TjDK3jQKndgwMJJIeRruCTnwvNy4BYVbDB2w8lhMfqksvthlasezlWyoBkUS3moL9dKCN5Gk1olZJipgKAr0OynYIuKz8YT8xGdegZYxJqxblT9jU22fXhkGo4q+BTpwRjx4i2YhPs2//WBjRFkCK6Rn6Xe5BUI=" noCertificadoSAT="00001000000102508049" selloSAT="imD9dEgrKYHQlip2GgWAsWjB3rY3F+T0FiqwYjyg8egk/HT02yaDt6Cf7U2jfHwdEkK3IJsDIwd9hIYO18NvJY98pshRqd8xHPwIIGOC6CyBYeabOZjZcFcc3C+LTuX9c0drSF74uzNJaZHs2OET0pxhwuMQRZSaxZSpedvx8tU="/></cfdi:Complemento></cfdi:Comprobante>


como este quiero darle formato en flash y despues conbertirlo en pdf es sobre la facturacion electronica crees que despues de darle formato en flash se pueda convertir en pdf o ke me recomiendas , bueno pero primero hay que ver lo del formato leerlo en flash

Por edwar_escalera

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 May 2011 09:38 am
Hola edwar.

El idNoticia es simplemente el "contador" o "indicador" de qué registro cargar. Por ejemplo, si cada registro tiene los campos : nombre, apellido, población, teléfono. Con idNoticia=1, recogeremos el primer registro. Luego al ir aumentando el idNoticia uno a uno iremos recorriendo todos los registros hasta que nos dé como error "no hay mas registros" o sea 'null' con:

Código :

if(portada_rss.firstChild.childNodes[0].childNodes[idNoticia+1] != null


Lo del formato se le puede dar directamente sobre el xml con etiquetas html y que flash las usará siempre y cuando en el cuadro de texto de flash actives la casilla 'html' Luego hay otra forma un poco mas enredosa de hacerlo que sería separar los campos del xml en diferentes cajas de texto en flash y a cada caja de texto darle unas propiedades de texto diferentes en el mismo flash.

Lo de exportar posteriormente estos datos a pdf no lo he hecho nunca pero creo recordar que la forma es desde xml a pdf por lo que tal vez no necesites ActionScript sinó mas bien asp o php.

Por pitger

Claber

201 de clabLevel



Genero:Masculino  

Cáceres

firefox

 

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