Comunidad de diseño web y desarrollo en internet online

Duda al recorrer un xml

Citar            
MensajeEscrito el 16 Ene 2013 12:08 pm
Hola.
Estoy intentando acceder a los nodos de un xml y tengo una duda. Necesito que me lea todos los nodos de una etiqueta pero solo me lee el primero de la primera etiqueta. Lo que estoy haciendo es lo siguiente:

estructura del xml:

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<codigo>
   <imagenes>
      <menu1>
      <thumb jpgURL="small/m1.jpg" url='big/bg1.jpg'><![CDATA[Foto1]]>
          <botones>
                <b1 posX="550" posY="450"><![CDATA[Lorem ipsum]]></b1>
                <b2 posX="450" posY="350"><![CDATA[eiusmod te]]></b2>
          </botones>
                </thumb>
                <thumb jpgURL="small/m2.jpg" url='big/bg2.jpg'><![CDATA[Foto2]]>
          <botones>
                <b1 posX="650" posY="320"><![CDATA[Lorem ipsum]]></b1>
                <b2 posX="510" posY="270"><![CDATA[eiusmod te]]></b2>
          </botones>
                 </thumb>
      </menu1>
   </imagenes>
</codigo>


y en mi action script tengo lo siguiente:

Código ActionScript :

var miXML = new XML();
_global.textDataXml = new Array();
miXML.ignoreWhite = true;
miXML.load("xml/init.xml");

miXML.onLoad = function (success)
{
    if (success)
    {
        initXml(0);
    }
}

initXml = function (ID)
{
    for (var i = 1; i < nodeLength; ++i)
    {
        var borra_thumb = _root.thumbLoader["item1" + i];
        borra_thumb.removeMovieClip();
    }
    var total = miXML.firstChild.childNodes[ID].firstChild.childNodes.length;
    for (var i = 1; i < total ; ++i)
    { 
    trace(miXML.firstChild.childNodes[ID].firstChild.firstChild.childNodes[i].firstChild):
    }
}


con esto solo me traza el primer nodo de la etiqueta botones:

Código :

 <b1 posX="550" posY="450"><![CDATA[Lorem ipsum]]></b1>


¿Qué puedo hacer para que me trace el resto?

Gracias.

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 23 Ene 2013 09:51 am
Haciendo unos cambios en el archivo XML y poniendo un segundo for, ya he conseguido que recorra todos los nodos con todos sus atributos, pero lo que no consigo es que me lea solo los nodos hijos que contiene un solo nodo, en vez de todos a la vez. Ahora mi archivo XML tiene esta estructura:

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<codigo>
   <imagenes jpgURL="small/m1.jpg" url="big/bg1.jpg" nombre="Lorem Ipsum">
      <botones>
         <boton posX="550" posY="438" texto="Lorem Ipsum1"/>
         <boton posX="620" posY="438" texto="Lorem Ipsum2"/>
         <boton posX="650" posY="116" texto="Lorem Ipsum3"/>
         <boton posX="120" posY="248" texto="Lorem Ipsum4"/>
      </botones>
   </imagenes>
   <imagenes jpgURL="small/m2.jpg" url="big/bg2.jpg" nombre="Lorem Ipsum">
      <botones>
         <boton posX="240" posY="268" texto="Lorem Ipsum1"/>
         <boton posX="435" posY="388" texto="Lorem Ipsum2"/>
      </botones>
   </imagenes>
</codigo> 


y mi AS está así:

Código ActionScript :

function initXml(miXML){
    for (var i = 0; i < nodeLength; i++)
    {
        var borra_thumb = _root.thumbLoader["item1" + i];
        borra_thumb.removeMovieClip();
    }
   var totales = miXML.firstChild.childNodes;
    
   for(var i=0; i < totales.length; i++){
      var thumbs = totales[i];
      var botones = thumbs.firstChild.childNodes;
      
      var thumb = thumbLoader.attachMovie("item1_mc", "item1" + i, i + 1000, {id: i, num: i});
      
      for (var j=0; j < botones.length; j++){
            var boton = botones[j];
            trace(" posX \""+ boton.attributes.posX +" posY \""+ boton.attributes.posY +"texto \"" + boton.attributes.texto);
      }
   } 
}


esto me traza:

Código :

 posX "550 posY "438 texto "Lorem Ipsum 1
 posX "240 posY "268 texto "Lorem Ipsum 1


es decir, solo el primer hijo de los nodos <botones>

¿Cómo podría trazar todos los nodos hijos de <botones> en vez de solo el primero de cada uno?
Por ejemplo, trazar solo:

Código :

         <boton posX="550" posY="438" texto="Lorem Ipsum1"/>
         <boton posX="620" posY="438" texto="Lorem Ipsum2"/>
         <boton posX="650" posY="116" texto="Lorem Ipsum3"/>
         <boton posX="120" posY="248" texto="Lorem Ipsum4"/>


Gracias!

Por plug

78 de clabLevel



Genero:Masculino  

firefox

 

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