Comunidad de diseño web y desarrollo en internet online

flash y XML mas complejo

Citar            
MensajeEscrito el 04 May 2005 04:25 pm
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE CESTAS [
<!ELEMENT CESTAS (CESTA+)>
<!ELEMENT CESTA (CATEGORIA+)>
<!ELEMENT CATEGORIA EMPTY>
<!ATTLIST CESTA
CODIGO CDATA #REQUIRED
DESCRIPCION CDATA #REQUIRED
OBJETIVO CDATA #IMPLIED
HORIZONTE CDATA #IMPLIED
>
<!ATTLIST CATEGORIA
IMPORTE CDATA #REQUIRED
URL CDATA #REQUIRED
>
]>
<CESTAS>
<CESTA CODIGO="C" DESCRIPCION="Conservadora" OBJETIVO="texto" HORIZONTE="texto">
<CATEGORIA IMPORTE="1000 euros" URL="index.html"/>
<CATEGORIA IMPORTE="2000 euros" URL=index.html"/>
<CATEGORIA IMPORTE="3000 euros" URL="index.html"/>
</CESTA>
<CESTA CODIGO="A" DESCRIPCION="Agresiva" OBJETIVO="texto2">
<CATEGORIA IMPORTE="123123 euros" URL="index.html"/>
<CATEGORIA IMPORTE="423234 euros" URL="index.html"/>
</CESTA>
</CESTAS>


buenas amigos, tengo este XML y lo que queria era verlo desde flash, es decir ir recogiendo la informacion de cada uno de los campos y dibujarlo en cajas de textos.

hasta ahora no habia tenido ningun problema con XML mas sencillitos pero con este me lio por todos lados...
ustedes me podrian echar un cable para ayudarme a resolver esta duda... no se como llegar hasta los campos de cada nodo??? necesito algun tipo de ruta especial???? como hago para llamar al segundo nodo??? en los ejemplos que he ido viendo por ahi los XML unicamente tienen un nodo, pero este tiene mas, necesito de un array??? como lo montaria???

no les pido que me resuelven el problema entero, sino que me echen un cable para saber que es lo que hay que tener en cuenta con un XML de este tipo.... no busco la solucion mas complicada... solo una.

de nuevo muchas gracias por su tiempo y por su ayuda...

un saludo

Por hust

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 May 2005 04:45 pm
para recorrer un xml solo se necesitan algunas propiedades:

firstChild: primer hijo
lastChild: ultimo hijo
nextSibling : siguiente nodo en el mismo nivel
previousSibling : anterior nodo en el mismo nivel
nodeValue: valor del nodo (si es de texto)

veamos este ejemplo

Código :

<Datos>
<personas id="1"> 
<nombre>juan</nombre>
<apellido>perez</apellido>
</personas>
</Datos>


y veamos q es cada dato:

firstChild: nodo <Datos> (y todo lo q contiene)
firstChild.firstChild : nodo <personas>
firstChild.firstChild.attributes["id"] : 1
firstChild.firstChild.firstChild: nodo <nombre>
firstChild.firstChild.firstChild.firstchild.nodeValue: juan

firstChild.firstChild.firstChild.nextSibling: nodo <apellido>
firstChild.firstChild.firstChild.nextSibling.firstChild.nodeValue: perez

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 04 May 2005 09:50 pm
muchas gracias amigo.... lo breve si es bueno, dos veces breve¡¡¡ ;););) me has ayudado mucho en serio, muchas gracias.... pero me surge una duda...

en tu ejemplo, si en vez de, en el nodo personas, 'id' hubiera mas atributos unicamente debería añadirle el nombre del mismo para que saliera en pantalla pero, y si hubiera mas personas, es decir, algo asi:

<Datos>

<personas id="1">
<nombre>juan</nombre>
<apellido>perez</apellido>
</personas>

<personas id="2">
<nombre>pedro</nombre>
<apellido>gimenez</apellido>
</personas>


</Datos>

como accederiamos al segundo hijo de Datos, es decir, al que tiene id=2, es aqui donde estoy perdido.... si me pudieras echar una mano....

aun asi muchas gracias por tu fantastica respuesta amiga, un saludo....

Por hust

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 May 2005 10:02 pm
eso es:

firstchild.firstChild.nextSibling.attributes["id"]

se pueden construir funciones q recorran el xml, q reciban el nivel por ejemplo y retornen valores (para hacer la vida mas facil!)

pd. yo tengo la mia!

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 04 May 2005 10:07 pm
muchas gracias David....

eso que me comentas de la funcion creo que es lo que mejor me vendría... porque yo te he puesto un ejemplo para saber como sería con otro solo, pero el XML final imagino que tendrá varios hijos....

donde podría leer documentacion acerca de eso que me comentas, tampoco te quiero dar la plasta con el tema que tampoco se si es muy extenso....

de nuevo muchas gracias amigo

Por hust

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 May 2005 10:17 pm
con la documentacion de flash es suficiente, y con los tutoriales (de la seccion tutoriales)

un regalo asi rapido:

Código :

function getNodoNivel(objxml,nivel) {
   var nodo = objxml.firstChild;
   var i = 0;
   while (i<nivel) {
      nodo = nodo.firstChild;
      i++;
   }
   return nodo;
}
var mixml=new XML("<Datos><personas id='1'><nombre>juan</nombre><apellido>perez</apellido></personas></Datos>");
trace(getNodoNivel(mixml,1));


pruebelo con valores de 0, 1 y 2 (o segun el XML)

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 04 May 2005 10:43 pm
ok David, muchas gracias de nuevo...

no estoy muy puesto en funciones pero me imagino que este es un momento igual de bueno que otro para empezar...

lo que entiendo que hace la funcion es lo siguiente..

crea la variable nodo y le asigna el primer hijo que contiene nuestro documento que sería todo lo que hay en Datos, es decir todo, no?:$:$

luego crea la variable i y le asigna el valor 0, y dice

mientras que el i (ahora 0) sea menor que el nivel: la variable nodo ahora avanzara un hijo (en este caso ya seria personas y todo lo que tiene dentro), y se le suma 1 a la variable i, devolvemos el valor de la variable nodo

creamos la variable del XML, mixml. Aquí tú has añadido todo el arbol no??? esto lo suprimimos cuando lo tengamos en un archivo aparte verdad?

y por ultimo te limitas a pintar la funcion teniendo en cuenta mixml y en el nivel 1

me lio un poco con lo de los niveles, realmente a que se refieren???

perdoname por ser tan pesado, si crees que ya esta bien no me contestes.... jejejej ;);)

en serio millones de gracias, te debo un par de birras....

un saludo¡¡

Por hust

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 May 2005 10:51 pm
<Datos>
<persona>
<nombre></nombre>
<apellido></apellido>
</persona>

<persona>
<nombre></nombre>
<apellido></apellido>
</persona>

</Datos>


datos es el primer nivel
persona el segundo
nombre el tercero
apellido el tercero tambien

sin importar cuantos grupos de "personas"
existan

es decir, un "nivel" es un nodo dentro de otro



ah bueno y el ejemplo era solo para mostrar su uso!

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 04 May 2005 11:14 pm
ajá David, estoy hecho un lio, :)

lo de los niveles me quedó muy claro pero me quedé en la funcion y no acabo de entenderla, lo que hace es detectar cuantos niveles tiene el xml??? y luego tu pintas el nivel que quieres.... pero si nombre y apellido estan en el mismo, como lo hace?¿?¿¿?¿

el problema que tenia yo al principio era saber cuantos 'persona' tenia el xml para asi meterme en el que yo deseo, pero ya me he perdido del todo amigo...pero no acabo de ver la relacion entre la funcion y esta cuestion...

se me agotan las gracias amigo...

Por hust

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 May 2005 03:08 pm
ah bueno, hay otra propiedad q se puede revisar, q es childNodes. Este es un array y su longitud (childNodes.length) dice cuantos nodos hay a ese nivel.

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 05 May 2005 04:55 pm
bien, en nuestro caso nos devolveria que el primer nivel tiene un nodo, el segundo también, y el tercero dos, no? muchas gracias David...

si los nodos a su vez tuvieran atributos, algo no muy extraño, se podría saber el numero de atributos que tiene cada uno, es decir, si el xml es asi:

<persona nombre="juan" apellido="perez" />

se podria saber de alguna forma cuantos atributos tiene ese nodo, lo digo porque no siempre tiene los mismos y para hacer que flash pinte una cosa u otra dependiendo del numero de atributos que tenga el nodo en cuestion....

no se si se puede conseguir eso...

gracias

Por hust

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 May 2005 04:57 pm
si, attributes tambien es un array y tiene la propiedad length

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 05 May 2005 07:30 pm
ok, entonces utilizandolo de la misma forma que el childNodes, nos dice el numero de atributos. También te lo dice por niveles no? y lo que quieres es saber si un atributo específico existe, no el numero de atributos que tiene, sino si existe uno en concreto, por ejemplo 'id', que puede estar o no en el xml????

voy a seguir trastenado a ver si consigo sacarlo poco a poco con toda la ayuda que me has prestado, te estoy muy agradecido, si me surge alguna duda te comentaré...

muchas gracias de nuevo amigo

Por hust

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 May 2005 07:47 pm
si claro, se puede barrer el nivel deseado y preguntar

if(nodo.attributes["id"]) //es decir, si existe
{
//lo q sea
}
else
{
//no existe
}

Por _david

565 de clabLevel


1 articulo

Genero:Masculino  

Bogota, Colombia

firefox
Citar            
MensajeEscrito el 05 May 2005 09:05 pm
de nuevo gracias amigo.... voy a trastear un poco con todo esto a ver que sale... sobre todo pondré especial atención en la función que me devuelva los nodos y atributos que tenga en ese momento el xml , que es lo que más flojo llevo, y ya te contaré....

lo dicho, muchisimas gracias David amigo, no sabes cuanto me estás ayudando...

un saludo...

Por hust

14 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 May 2009 09:17 pm
hust ! yo sigo sin entender mucho de esto pero tengo un problema similar como te fué con lo tuyo lo pudiste solucionar me podrian ayudr a mi ?

Por pituvilotta

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 May 2009 09:20 pm
mi xml !

<noticias>
<noticia>
<seccion>TNA</seccion>
<fecha>10/5/2009</fecha>
<titulo>Andres Calamaro LO MAS IMPORTANTE SE VIENE AHORA</titulo>
<copete>Sub17 femenino en la Liga Nacional de Basquet</copete>
<encabezado>La categoria Sub 17 se adjudico</encabezado>
<lecturas/>
<foto>No</foto>
</noticia>

<noticia>
<seccion>A.P.B</seccion>
<fecha>10/5/2009</fecha>
<titulo>SABIA QUE SI PONIA TODO PODIA LOGRARLO</titulo>
<copete>carlos reuteman quntuple campeon argentino</copete>
<encabezado>Entre los dias 13 y 16 de Junio pasados</encabezado>
<lecturas/>
<foto>Si</foto>
</noticia>

<noticia>
<seccion>Liga A</seccion>
<fecha>11/5/2009</fecha>
<titulo>la pucha ichu</titulo>
<copete>a ver que onda</copete>
<encabezado>no me sale nada</encabezado>
<lecturas/>
<foto>Si</foto>
</noticia>
</noticias>

Por pituvilotta

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 May 2009 09:23 pm
ahora en flash voy a tener distintos campos

noticia 1 que contendrá los campos seccion, fecha, titulo, etc. y un mc para cargar la foto

noticia 2 que contendrá los campos seccion, fecha, titulo, etc. y un mc para cargar la foto

noticia 3 que contendrá los campos seccion, fecha, titulo, etc. y un mc para cargar la foto

cuando clikees en la foto, por ejemplo se llama a otro mc que contiene un campo mas grande para el explayamiento de la noticia con su respectiva foto un poquito mas grande

no me sale nada toy al horno

Por pituvilotta

3 de clabLevel



 

firefox

 

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