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

problemas con XML en ActionScript

Estas en el tema de problemas con XML en ActionScript en el foro de Flash y Actionscript en Foros del Web. tengo esto en mi XML Código PHP: < XMLmenu >      < botonpadre nombre = "menu1"  >         < botonhijo nombre = "submenu1" ></ botonhijo >          < botonhijo nombre = ...
  #1 (permalink)  
Antiguo 21/10/2006, 13:06
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 2 meses
Puntos: 11
problemas con XML en ActionScript

tengo esto en mi XML
Código PHP:
<XMLmenu
    <
botonpadre nombre="menu1" >
        <
botonhijo nombre="submenu1"></botonhijo
        <
botonhijo nombre="submenu2"></botonhijo
   </
botonpadre
   <
botonpadre nombre="menu2"></botonpadre
  </
XMLmenu


Y esto en JS



Código:
.............
botonpadre.onRelease = function() 
    {   
        CargarHijos(this.nombre);}
    } 
 
function CargarHijos(subMenu)
{      
   trace(subMenu+" - "+obj_xml[subMenu].childNodes.length);
}
El trace() me devuelve lo siguiente: "menu1 - undefinded"

Saludos y gracias por la ayuda...
  #2 (permalink)  
Antiguo 22/10/2006, 15:06
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 1 mes
Puntos: 0
en tu código: obj_xml[subMenu].childNodes
qué es: objeto_xml ? es un nodo?, si es el primero nodo padre del XML, estás procediendo mal, si es un nodo hijo y de posicion subMenu, el valor de subMenu debe ser un número, no una cadena
creo que andas algo confuso con XML

aver si te ayuda este ejemplo:

el archivo menu.xml
Código HTML:
<?xml version="1.0" encodign="UTF-8"?>
<XMLmenu>
	<botonpadre nombre="menu1" otroattributo="algo1">
		<botonhijo nombre="submenu1" otroattributo="subalgo1"/>
		<botonhijo nombre="submenu2" otroattributo="subalgo2"/>
		<botonhijo nombre="submenu3" otroattributo="subalgo2"/>
	</botonpadre>
	<botonpadre nombre="menu2" otroattributo="algo2"/>
	<botonpadre nombre="menu3" otroattributo="algo3"/>
</XMLmenu> 
el codigo .as
Código:
var obj_xml:XML = new XML();
obj_xml.ignoreWhite = true;
obj_xml.onLoad = function(ok):Void{
	if(ok) mostrar_menu(this.firstChild.childNodes);
	else trace('error');
}
//-------------->
//creamos funciones para facilitarnos la lectura de los attributos en el XML
var atributo_de_padre:Function = function(posicion_xml_padre:Number,attributo:String):String{
	return obj_xml.firstChild.childNodes[posicion_xml_padre].attributes[attributo];
}
var atributo_de_hijo:Function = function(posicion_xml_padre:Number,posicion_xml_hijo:Number,attributo:String):String{
	return obj_xml.firstChild.childNodes[posicion_xml_padre].childNodes[posicion_xml_hijo].attributes[attributo];
}
//-------------->
var mostrar_menu:Function = function(menu_items:Array):Void{
	//exploramos la lista de nodos padre
	for(var n=0; n<menu_items.length; n++){
		trace(atributo_de_padre(n,'nombre')+' - '+atributo_de_padre(n,'otroattributo'));
		//exploramos la lista de cada nodo hijo
		var submenu_item:Array = menu_items[n].childNodes;
		for(var m=0; m<submenu_item.length; m++){
			trace("\t"+atributo_de_hijo(n,m,'nombre')+' - '+atributo_de_hijo(n,m,'otroattributo'));
		}
	}
	//esas funciones anteriores la podeos usar para consultar cualquier atributo tomando encuenta la posicion que ocupan en el xml los nodos
	trace("-------------------------------------")
	trace(atributo_de_padre(0,'nombre')); //el atributo 'nombre' del primer nodo "botonpadre"
	trace(atributo_de_padre(0,'otroattributo')); //el atributo 'otroattributo' del primer nodo "botonpadre"
	trace(atributo_de_hijo(0,1,'nombre')); //el atributo 'nombre' del segundo nodo hijo del primer nodo padre
	trace(atributo_de_hijo(0,0,'otroattributo')); //el atributo 'otroattributo' del primer nodo hijo del primer nodo padre
	//etc
}
//-------------->
obj_xml.load('menu.xml');

stop();
__________________
Si digo que soy mentiroso. ¿Lo soy?

Última edición por luistar; 22/10/2006 a las 15:12
  #3 (permalink)  
Antiguo 23/10/2006, 08:13
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 2 meses
Puntos: 11
Bien luistar...

me funciona normal con posiciones, pero lo que deseo es manejarlos con nombres.. es decir de este modo..
....
var obj_xml:XML = new XML();
.........................

nombre = (obj_xml.firstChild.childNodes[0].attributes.nombre );
trace(obj_xml[nombre].childNodes.length);

Ahi deberia arrojarme 3 y no lo hace... arroja undefined

parte de este codigo lo saque de una web, no recuerdo donde...

En su ejemplo si me funciona, pero no me funciona cuando quiero aplicarlo a mi programa...

que raro :S
  #4 (permalink)  
Antiguo 23/10/2006, 08:34
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 22 años, 3 meses
Puntos: 193
umm.. Seguro que venia en un ejemplo?

Segun se. y mira que trabajo a diario con XML y Flash no se puede accesar a un nodo del XML mediante el nombre, a menos que utilices XPATH esa es otra historia, Con XPATH tienes mas metodos para manejar un XML.

Otro solucion es convertir el XML a un objeto, entonces si podras acceder a la estructura mediante los nombres de los nodos.
  #5 (permalink)  
Antiguo 23/10/2006, 08:57
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 2 meses
Puntos: 11
Cita:
Otro solucion es convertir el XML a un objeto, entonces si podras acceder a la estructura mediante los nombres de los nodos.
eso hice.. y nada
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 20:06.