Comunidad de diseño web y desarrollo en internet online

Problema con nodos anidados

Citar            
MensajeEscrito el 17 Abr 2007 03:36 pm
Hola a todos, tengo un problema para leer en flash nodos anidados de xml, este es el XML:

Código :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<noticias>
   <noti_1>
      <titular><![CDATA[<font face="Verdana" size="10">Titular 1</font>]]></titular>
      <cuerpo><![CDATA[<font face="Verdana" size="9">La cuerpo 1 va aqui link <a href="http://www.rsf.fm">aqui</a></font>]]></cuerpo>
      <foto1>fotos/img1.jpg</foto1>
      <foto2>fotos/img2.jpg</foto2>
      <foto3>fotos/img3.jpg</foto3>
   </noti_1>
   <noti_2>
      <titular><![CDATA[<font face="Verdana" size="10">Titular 2</font>]]></titular>
      <cuerpo><![CDATA[<font face="Verdana" size="9">La cuerpo 2 va aqui</font>]]></cuerpo>
      <foto1>fotos/img2.jpg</foto1>
      <foto2>fotos/img3.jpg</foto2>
      <foto3>fotos/img1.jpg</foto3>
   </noti_2>
   <noti_3>
      <titular><![CDATA[<font face="Verdana" size="10">Titular 3</font>]]></titular>
      <cuerpo><![CDATA[<font face="Verdana" size="9">La cuerpo 3 va aqui link <a href="http://www.rsf.fm">aqui</a></font>]]></cuerpo>
      <foto1>fotos/img3.jpg</foto1>
      <foto2>fotos/img2.jpg</foto2>
      <foto3>fotos/img1.jpg</foto3>
   </noti_3>
   <noti_4>
      <titular><![CDATA[<font face="Verdana" size="10">Titular 4</font>]]></titular>
      <cuerpo><![CDATA[<font face="Verdana" size="9">La cuerpo 4 va aqui</font>]]></cuerpo>
      <foto1>fotos/img4.jpg</foto1>
      <foto2>fotos/img5.jpg</foto2>
      <foto3>fotos/img2.jpg</foto3>
   </noti_4>
   <noti_5>
      <titular><![CDATA[<font face="Verdana" size="10">Titular 5</font>]]></titular>
      <cuerpo><![CDATA[<font face="Verdana" size="9">La cuerpo 5 va aqui link <a href="http://www.rsf.fm">aqui</a></font>]]></cuerpo>
      <foto1>fotos/img5.jpg</foto1>
      <foto2>fotos/img1.jpg</foto2>
      <foto3>fotos/img4.jpg</foto3>
   </noti_5>
</noticias>

Y este es el código Flash que uso para ir leyendo cada nodo, pero sólo me lee el de titular, pero los otros me dice "undefined" y no entiendo que es lo que hago mal.

Código :

      for (var n:Number = 0; n<total; n++) {
         nuevoClip = mc_Miniatures1.attachMovie("MC_miniNoti", "MC_miniNoti_"+contador, contador);
         nuevoClip.txt_noticia.html = true;
         nuevoClip.txt_titular.html = true;
         nuevoClip.numMovie = contador;
         //trace(this.firstChild.childNodes[numNodo].firstChild.childNodes[0]);
         
         nuevoClip.txt_titular.htmlText = this.firstChild.childNodes[numNodo].firstChild.childNodes[0].nodeValue;
         //numNodo++;
         nuevoClip.txt_noticia.htmlText = this.firstChild.childNodes[numNodo].firstChild.childNodes[1].nodeValue;
         //numNodo++;
         nuevoClip.urlFoto1 = this.firstChild.childNodes[numNodo].firstChild.childNodes[2].nodeValue;
         //numNodo++;
         nuevoClip.urlFoto2 = this.firstChild.childNodes[numNodo].firstChild.childNodes[3].nodeValue;
         //numNodo++;
         nuevoClip.urlFoto3 = this.firstChild.childNodes[numNodo].firstChild.childNodes[4].nodeValue;
         
         // esto es una prueba
         urlFoto3 = this.firstChild.childNodes[0].firstChild.childNodes[0].nodeValue;
         trace(urlFoto3);
         
         numNodo++;
         nuevoClip._y = posY;
         contador++;
         posY = posY+75;
      }
      play();
   } else {
      trace("no cargó el xml");
   }


El caso es que hago un trace de prueba y me lee el primer Nodo anidado de noti_ (titular) pero ni el cuerpo de la noticia ni la url de las fotos no.
Gracias, un saludo.

Por silver

25 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Abr 2007 03:41 pm
¿Está eso dentro de un evento onLoad? ¿Pusiste ignoreWhite=true?
Normalmente estas cosas del xml hay que mirarlas con bastante paciencia, y usando un montón el depurador o los traces.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 17 Abr 2007 03:43 pm
si, mira este es el código completo del Flash:

Código :

var contador = 1;
var posX = 10;
var posY = 0;
var num = 40;
//Declara la variable "clase_xml" como un objeto XML
_global.clase_xml = new XML();
//objeto xml
clase_xml.ignoreWhite = true;
// propiedad para ignorar espacion en blanco
clase_xml.onLoad = function() {
   if (this.loaded) {
      var i = 0;
      var numNodo = 0;
      total = this.firstChild.childNodes.length;
      for (var n:Number = 0; n<total; n++) {
         nuevoClip = mc_Miniatures1.attachMovie("MC_miniNoti", "MC_miniNoti_"+contador, contador);
         nuevoClip.txt_noticia.html = true;
         nuevoClip.txt_titular.html = true;
         nuevoClip.numMovie = contador;
         //trace(this.firstChild.childNodes[numNodo].firstChild.childNodes[0]);
         
         nuevoClip.txt_titular.htmlText = this.firstChild.childNodes[numNodo].firstChild.childNodes[0].nodeValue;
         //numNodo++;
         nuevoClip.txt_noticia.htmlText = this.firstChild.childNodes[numNodo].firstChild.childNodes[1].nodeValue;
         //numNodo++;
         nuevoClip.urlFoto1 = this.firstChild.childNodes[numNodo].firstChild.childNodes[2].nodeValue;
         //numNodo++;
         nuevoClip.urlFoto2 = this.firstChild.childNodes[numNodo].firstChild.childNodes[3].nodeValue;
         //numNodo++;
         nuevoClip.urlFoto3 = this.firstChild.childNodes[numNodo].firstChild.childNodes[4].nodeValue;
         
         // esto es una prueba
         urlFoto3 = this.firstChild.childNodes[0].firstChild.childNodes[0].nodeValue;
         trace(urlFoto3);
         
         numNodo++;
         nuevoClip._y = posY;
         contador++;
         posY = posY+75;
      }
      play();
   } else {
      trace("no cargó el xml");
   }
};
_global.datos_xml = new Object();
clase_xml.load("xml/notis.xml");

Por silver

25 de clabLevel



 

msie7
Citar            
MensajeEscrito el 17 Abr 2007 04:00 pm
Prueba dejándolas todas así:

Código :

this.firstChild.childNodes[numNodo].childNodes[0/*NUM*/].firstChild.nodeValue;

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 17 Abr 2007 04:42 pm
pues no funciona. Pero al final he decidido cambiar el XML y pasar del nodo noti_1, 2, etc y meterlo todo a lo salvaje.
XML:

Código :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<noticias>
   <titular><![CDATA[<font face="Verdana" size="10">Titular 1</font>]]></titular>
   <noticia><![CDATA[<font face="Verdana" size="9">La Noticia 1 va aqui link <a href="http://www.rsf.fm">aqui</a></font>]]></noticia>
   <foto1>fotos/img1.jpg</foto1>
   <foto2>fotos/img2.jpg</foto2>
   <foto3>fotos/img3.jpg</foto3>
   <titular><![CDATA[<font face="Verdana" size="10">Titular 2</font>]]></titular>
   <noticia><![CDATA[<font face="Verdana" size="9">La Noticia 2 va aqui</font>]]></noticia>
   <foto1>fotos/img2.jpg</foto1>
   <foto2>fotos/img3.jpg</foto2>
   <foto3>fotos/img1.jpg</foto3>
   <titular><![CDATA[<font face="Verdana" size="10">Titular 3</font>]]></titular>
   <noticia><![CDATA[<font face="Verdana" size="9">La Noticia 3 va aqui link <a href="http://www.rsf.fm">aqui</a></font>]]></noticia>
   <foto1>fotos/img4.jpg</foto1>
   <foto2>fotos/img5.jpg</foto2>
   <foto3>fotos/img2.jpg</foto3>
   <titular><![CDATA[<font face="Verdana" size="10">Titular 4</font>]]></titular>
   <noticia><![CDATA[<font face="Verdana" size="9">La Noticia 4 va aqui</font>]]></noticia>
   <foto1>fotos/img5.jpg</foto1>
   <foto2>fotos/img4.jpg</foto2>
   <foto3>fotos/img3.jpg</foto3>
   <titular><![CDATA[<font face="Verdana" size="10">Titular 5</font>]]></titular>
   <noticia><![CDATA[<font face="Verdana" size="9">La Noticia 5 va aqui link <a href="http://www.rsf.fm">aqui</a></font>]]></noticia>
   <foto1>fotos/img3.jpg</foto1>
   <foto2>fotos/img2.jpg</foto2>
   <foto3>fotos/img1.jpg</foto3>
   <titular><![CDATA[<font face="Verdana" size="10">Titular 6</font>]]></titular>
   <noticia><![CDATA[<font face="Verdana" size="9">La Noticia 6 va aqui</font>]]></noticia>
   <foto1>fotos/img1.jpg</foto1>
   <foto2>fotos/img4.jpg</foto2>
   <foto3>fotos/img5.jpg</foto3>
   <titular><![CDATA[<font face="Verdana" size="10">Titular 7</font>]]></titular>
   <noticia><![CDATA[<font face="Verdana" size="9">La Noticia 7 va aqui link <a href="http://www.rsf.fm">aqui</a></font>]]></noticia>
   <foto1>fotos/img3.jpg</foto1>
   <foto2>fotos/img2.jpg</foto2>
   <foto3>fotos/img1.jpg</foto3>
   <titular><![CDATA[<font face="Verdana" size="10">Titular 8</font>]]></titular>
   <noticia><![CDATA[<font face="Verdana" size="9">La Noticia 8 va aqui</font>]]></noticia>
   <foto1>fotos/img5.jpg</foto1>
   <foto2>fotos/img5.jpg</foto2>
   <foto3>fotos/img5.jpg</foto3>
</noticias>


Así si que funciona, pero me gustaría para otras ocasiones hacerlo con un poco más de estilo y no tan bastorro. Así que si hay alguien que sabe como hacerlo le estaria agradecido yo y supongo que más de uno tambien.

Por silver

25 de clabLevel



 

msie7

 

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