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

Carga de XML en Array

Estas en el tema de Carga de XML en Array en el foro de Flash y Actionscript en Foros del Web. Hola amigos. Cada nuevo descubrimirnto de AS genera nuevas dudas!!!! Que maravilla. Mi problema es el siguiente. Por un lado tengo un XML, en el ...
  #1 (permalink)  
Antiguo 10/01/2007, 14:51
Avatar de nozomi  
Fecha de Ingreso: diciembre-2006
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Carga de XML en Array

Hola amigos.
Cada nuevo descubrimirnto de AS genera nuevas dudas!!!! Que maravilla.

Mi problema es el siguiente.
Por un lado tengo un XML, en el cual hay dos grupos (actualmente), de la siguiente manera:
<root>
<colores>
<num>4</num>
<c01>rojo</c01>
<c02>verde</c02>
<c03>amarillo</c03>
<c04>naranja</c04>
</colores>
<formas>
<num>4</num>
<f01>cuadro</f01>
<f01>circulo</f01>
<f01>triangulo</f01>
<f01>trapecio</f01>
</formas>
</root>


Desde Flash cargo el XML, con
XML.prototype.__proto__.byName = function(node_name) {
if (this.nodeName == node_name) {
return this;
} else {
return this.nextSibling.byName(node_name) || this.firstChild.byName(node_name);
}
};

que me permite luego buscar un valor del XML por el nombre directamente, y no por el número de posición, tipo

var numerocolores;
numerocolores = colores.byName("num").firstChild;


Hasta aquí, Ok.
El problema es que me gustaría que se me cargara los contenidos de cada nivel del XML (colores, formas) en un array, por medio de una acción. Teniendo en cuenta que el primer valor "num" me indica cuantos objetos hay en ese nivel del XML (por que probé con WHILE, y morí). Esto es para poder luego añadir más colores o formas al XML, sin tener que modificar el FLA. Más adelante se mostrarán resultados de dichas tablas por medio de llamadas generadas aleatoriamente, pero eso ya es otra historia (histeria)

A ver si me podéis hechar un cable, por que ya he perdido el norte.

Gracias a todos!!!
  #2 (permalink)  
Antiguo 10/01/2007, 15:28
 
Fecha de Ingreso: septiembre-2006
Mensajes: 1.193
Antigüedad: 11 años, 2 meses
Puntos: 30
Re: Carga de XML en Array

como me base en que colores y formas tienen 5 hijos:



Código:
- <colores>
  <num>4</num> 
  <c01>rojo</c01> 
  <c02>verde</c02> 
  <c03>amarillo</c03> 
  <c04>naranja</c04> 
  </colores>
- <formas>
  <num>4</num> 
  <f01>cuadro</f01> 
  <f01>circulo</f01> 
  <f01>triangulo</f01> 
  <f01>trapecio</f01> 
  </formas>

hice este codigo:


Código:
var mixml:XML = new XML();
mixml.load("lista.xml");
mixml.ignoreWhite = true;
mixml.onLoad = function() {
	var largo:Number = mixml.firstChild.childNodes.length;
	var largo_hijos:Number = mixml.firstChild.childNodes[0].childNodes.length;
	for (var i = 0; i<largo; i++) {
		for (var j = 0; j<largo_hijos; j++) {
			trace(mixml.firstChild.childNodes[i].childNodes[j].firstChild.nodeValue);
		}
	}
};

de esta forma puedes crear mas grupos en tu archivo xml por ejemplo puedes poner mas grupos de colores y formas siempre y cuando tengan 5 hijos y el flash se actualiza solo:

Código:
- <colores>
  <num>4</num> 
  <c01>rojo</c01> 
  <c02>verde</c02> 
  <c03>amarillo</c03> 
  <c04>naranja</c04> 
  </colores>
- <formas>
  <num>4</num> 
  <f01>cuadro</f01> 
  <f01>circulo</f01> 
  <f01>triangulo</f01> 
  <f01>trapecio</f01> 
  </formas>
- <colores>
  <num>4</num> 
  <c01>azul</c01> 
  <c02>morado</c02> 
  <c03>gris</c03> 
  <c04>negro</c04> 
  </colores>
- <formas>
  <num>4</num> 
  <f01>ovalo</f01> 
  <f01>estrella</f01> 
  <f01>espacio</f01> 
  <f01>mesa</f01> 
  </formas>

- <colores>
  <num>4</num> 
  <c01>cafe</c01> 
  <c02>marino</c02> 
  <c03>aqua</c03> 
  <c04>rojito</c04> 
  </colores>
- <formas>
  <num>4</num> 
  <f01>cuadrodos</f01> 
  <f01>circulodos</f01> 
  <f01>triangulodos</f01> 
  <f01>trapeciodos</f01> 
  </formas>
  #3 (permalink)  
Antiguo 10/01/2007, 15:55
Avatar de nozomi  
Fecha de Ingreso: diciembre-2006
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Re: Carga de XML en Array

Ok Rizzo.
El problema es que puede variar (variará) la cantidad de hijos. Por eso he creado el primer campo "num", para tomarlo como variable de la cantidad de hijos que tendrá cada nodo.

Gracias por tu respuesta
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 21:54.