Foros del Web » Creando para Internet » Flash y Actionscript »

Xml Y Flash

Estas en el tema de Xml Y Flash en el foro de Flash y Actionscript en Foros del Web. hola ¿que tal?,,,, tengo el siguiente codigo XML el cual debo tomar desde flash, mi problema es que encuentro dificultades en acceder a informacion del ...
  #1 (permalink)  
Antiguo 15/03/2006, 07:50
 
Fecha de Ingreso: noviembre-2005
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
Exclamación Xml Y Flash

hola ¿que tal?,,,,
tengo el siguiente codigo XML el cual debo tomar desde flash, mi problema es que encuentro dificultades en acceder a informacion del arbol cuando es una rama profunda,,,
el arbol es este:

<productos>

<comedores>

<dover>
<titulo>DOVER</titulo>
<descrip>Muebles</descrip>
</dover>

<vera>
<titulo>Vera</titulo>
<descrip>Mueble Vera</descrip>
</vera>

</comedores>

<mesas>

<mesa1>
<titulo>mesa1</titulo>
<descrip>Vera</descrip>
</mesa1>

</mesas>


</productos>

por ejemplo para acceder a <titulo> dentro de <dover> deberia ser algo como:
firstChild.childNodes[0].firstChild.childNodes[0].firstChild.nodeValue ;pero creo que no es así, podrian darme ejemplos de como acceder a titulo y otra info de ese arbol ¿?

es importante,
muchas gracias !!!
  #2 (permalink)  
Antiguo 15/03/2006, 08:49
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 13 años, 4 meses
Puntos: 13
Hola! Te voy pasando los distintos niveles (a la variable XML la llame XMLConsultas):

Acceder a todo el árbol: XMLConsultas

Acceder al nodo comedores: XMLConsultas.firstChild.childNodes[0]

Acceder al nodo dover: XMLConsultas.firstChild.childNodes[0].childNodes[0]

Acceder al nodo título: XMLConsultas.firstChild.childNodes[0].childNodes[0].childNodes[0]

Acceder al valor dentro del nodo título: XMLConsultas.firstChild.childNodes[0].childNodes[0].childNodes[0].firstChild.nodeValue

Acceder al nodo descrip: XMLConsultas.firstChild.childNodes[0].childNodes[0].childNodes[1]

Acceder al valor dentro del nodo título: XMLConsultas.firstChild.childNodes[0].childNodes[0].childNodes[1].firstChild.nodeValue

Acceder al nodo vera:
XMLConsultas.firstChild.childNodes[0].childNodes[1]

Acceder al nodo título (de Vera, no de Dover): XMLConsultas.firstChild.childNodes[0].childNodes[1].childNodes[0]

Acceder al valor dentro del nodo título: XMLConsultas.firstChild.childNodes[0].childNodes[1].childNodes[0].firstChild.nodeValue

Acceder al nodo descrip: XMLConsultas.firstChild.childNodes[0].childNodes[1].childNodes[1]

Acceder al valor dentro del nodo descrip: XMLConsultas.firstChild.childNodes[0].childNodes[1].childNodes[1].firstChild.nodeValue

Acceder al nodo mesas: XMLConsultas.firstChild.childNodes[1]

Acceder al nodo mesa1: XMLConsultas.firstChild.childNodes[1].childNodes[0]

Acceder al nodo titulo: XMLConsultas.firstChild.childNodes[1].childNodes[0].childNodes[0]

Acceder al valor dentro del nodo titulo: XMLConsultas.firstChild.childNodes[1].childNodes[0].childNodes[0].firstChild.nodeValue

Acceder al nodo descrip: XMLConsultas.firstChild.childNodes[1].childNodes[0].childNodes[1]

Acceder al valor dentro del nodo descrip: XMLConsultas.firstChild.childNodes[1].childNodes[0].childNodes[1].firstChild.nodeValue

Phew!! Eso sería todo... Si le pifie en alguno (cosa que es muy probable ) postea nomas.

Te paso este tutorial de XML que a mi me sirvio bastante.

Espero te sirva.
Saludos. Lucas
__________________
No sign...
  #3 (permalink)  
Antiguo 15/03/2006, 09:19
 
Fecha de Ingreso: noviembre-2005
Mensajes: 13
Antigüedad: 12 años
Puntos: 0
genial, te agradezco mucho,,,,,, !
muy amable
  #4 (permalink)  
Antiguo 15/03/2006, 11:34
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 12 años, 9 meses
Puntos: 0
lo de arriba se parece a los errores que me daba php y mysql xD

santoel25
deberías pensar en redefinir la estructura del XML
te sugiero esta:

archivo: productos.xml
Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<productos>
	<tipo nombre="comedores">
		<producto nombre="DOVER" descripcion="Muebles" precio="16.54" otro_attributo="sd fadfa" />
		<producto nombre="VERA" descripcion="Mueble Vera" precio="65.4" otro_attributo="sds gfdg" />
		<producto nombre="CERA" descripcion="Mueble cera" precio="45.62" otro_attributo="sjk dfad klfa" />
		<producto nombre="MARA" descripcion="Mueble mara" precio="12.51" otro_attributo="dsr gsdfa dfa" />
		<producto nombre="TARA" descripcion="Mueble tara" precio="48.24" otro_attributo="sjfhjdfa dffghja" />
	</tipo>
	<tipo nombre="mesas">
		<producto nombre="mesa1" descripcion="Vera" precio="48.52" otro_attributo="sdf dfad s fa" />
		<producto nombre="mesa2" descripcion="Veracidad" precio="81.32" otro_attributo="ad sdfsfgadfa" />
		<producto nombre="mesa3" descripcion="Verano" precio="12.35" otro_attributo="th sdfa dfa" />
		<producto nombre="mesa4" descripcion="Veracruz" precio="84.53" otro_attributo="sdfadg fa" />
		<producto nombre="mesa5" descripcion="Veraalgo" precio="62.84" otro_attributo="sdfg sdfadfa" />
	</tipo>
</productos> 
esto te facilitará no sólo a hacer más comprensible el XML
sino a manejarlo con más facilidad con ACTIONSCRIPT
por ejemplo se puede crear funciones para consultar de manera muy facil los valores (prueba este código)

Código:
var productos_xml:XML = new XML();
productos_xml.ignoreWhite = true;
productos_xml.load('productos.xml');

//------------------------>
var valorSegunPosicion:Function = function(poscicionTIPO:Number,posicionPRODUCTO:Number,atributo:String):String{
	return productos_xml.firstChild.childNodes[poscicionTIPO].childNodes[posicionPRODUCTO].attributes[atributo];
}

//------------------------>
var valorSegunNombre:Function = function(nombreTIPO:String,nombrePRODUCTO:String,atributo:String):String{
	var lista:Array = new Array();
	//--primero buscamos el nodo cuyo nombre coincida con el 'tipo' que queremos
	//una vez que lo encontremos le asiganmos sus hijos nodos(childNodes) al array: lista
	for(var i in productos_xml.firstChild.childNodes){
		if(productos_xml.firstChild.childNodes[i].attributes.nombre == nombreTIPO){
			lista = productos_xml.firstChild.childNodes[i].childNodes; break;
		}
	}
	//--y ahora buscamos dentro del array 'lista' el nodo cuyo attributo nombren coincida con: 'producto'
	//cuando lo encontremos, retornamos el valor del atrributo que estamos pidiendo
	for(var i in lista){
		if(lista[i].attributes.nombre == nombrePRODUCTO) return lista[i].attributes[atributo];
	}
}

/* para usarlos
valorSegunPosicion(0,0,'descripcion')
valorSegunNombre('comedores','DOVER','descripcion')

te devolveran una cadena con el valor del attributo
*/

//------------------------->
//ejemplos de su uso (hacer click)
this.onMouseUp = function(){
	trace('CONOCIENDO LAS POSICIONES EN EL ARBOL XML');
	trace('atributo "nombre" de la posicion 0,0 = '+valorSegunPosicion(0,0,'nombre'));
	trace('atributo "descripcion" de la posicion 0,0 = '+valorSegunPosicion(0,0,'descripcion'));
	trace('atributo "precio" de la posicion 0,0 = '+valorSegunPosicion(0,0,'precio'));
	trace('atributo "otro_attributo" de la posicion 0,0 = '+valorSegunPosicion(0,0,'otro_attributo'));
	//------>
	trace('CONOCIENDO LOS NOMBRES');
	trace('descripcion del producto "DOVER" que pertenece al tipo "comedores" = '+valorSegunNombre('comedores','DOVER','descripcion'));
	trace('precio del producto "DOVER" que pertenece al tipo "comedores" = '+valorSegunNombre('comedores','DOVER','precio'));
	trace('otro_attributo del producto "DOVER" que pertenece al tipo "comedores" = '+valorSegunNombre('comedores','DOVER','otro_attributo'));
	trace('descripcion del producto "mesa3" que pertenece al tipo "mesas" = '+valorSegunNombre('mesas','mesa3','descripcion'));
}

stop();
:D
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #5 (permalink)  
Antiguo 15/03/2006, 11:42
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 13 años, 4 meses
Puntos: 13
Cita:
Iniciado por luistar
lo de arriba se parece a los errores que me daba php y mysql xD
Jajaja , pobre luistar. Es cierto, con una reestructuración tal vez quede un poco mas ordenado.

Saludos. Lucas
__________________
No sign...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:40.