flash 8 + ids de xml.
La utilizaci�n de atributos id en los xml, facilta el manejo de la infomaci�n de estos, de echo facilitaba tanto la el acceso a la informaci�n dentro del xml, que casi se pod�a considerar una buena pr�ctica utilizar nodos con ident�ficadores �nicos, pero algunas cosas han cambiado desde el flash7.
Versi�n larga.
supongamos que tenemos un xml.datos.xml
[code]
[/code]
flash 7 reconoc�a los ids autm�ticamente, asi que para saber la descripci�n de un nodo espec�fico habia que hacer algo como esto.
[code]ObjXML['idNodo'].toString();[/code]
o
[code]ObjXML['idNodo'].attibutes.nombre);[/code]
as�, no teniamos que ir recorriendo el xml, buscando un nodo espec�fico, para saber el �ndice de este y obtener los datos, es decir, convertir el xml casi que en un arreglo de lista.
(publicar como flash7)
[code]
var el:XML = new XML ();
el.ignoreWhite = true;
function parse(s:Boolean):Void{
if(s){
trace(this['p_02'].toString());
}
}
el.onLoad = parse;
el.load("datos.xml");
[/code]
La sorpresa vino, cuando este tipo de acceso a xml dej� de funcionar cuando abr� un fla en flash 8.
El alivio vino luego de sumergirme en la documentaci�n del objeto xml para esta versi�n (obviamente, luego del "qu� putas cambiaron ahora???")
sucede que en esta version se hace un mapa de los ids referenciando los origales y guardando esta referencia en un objeto "idMap", del xml.
(pubicar como fp8)
[code]
var el:XML = new XML ();
el.ignoreWhite = true;
function parse(s:Boolean):Void{
if(s){
for(var n in this.idMap){
trace(n + " " + this.idMap[n].attributes.nombre);
}
}
}
el.onLoad = parse;
el.load("datos.xml");
[/code]
es decir para hacer lo que hac�amos antes, nada m�s tenemos que ir a bucar nuestra informaci�n dentro del objeto idMap.
[code]
var el:XML = new XML ();
el.ignoreWhite = true;
function parse(s:Boolean):Void{
if(s){
trace(this.idMap['p_02'].toString());
}
}
el.onLoad = parse;
el.load("datos.xml");
[/code]
Versi�n corta.
- El acceso a la informaci�n con nodos con identificador �nico ya no se hace directamente, ahora se acceden a ellos mediante el objeto idMap dentro el mismo XML.
- Si se quiere hacer otro xml que contengan estos ids se puede hacer con la funci�n parseXML
[code]nuevoXML.parseXML(viejoXML);[/code] - Hay un proverbio antiguo muy famoso, que por lo general aplica a programaci�n.
Si funciona: no lo toques, que la puedes c*gar.
Desconoc�a que flash7 pod�a reconocer un id de esa manera. No se me pas� por la cabeza.
Gracias.
Un recurso interesante para trastear con un XML es el componente que desarrolla Arul.
http://www.shockwave-india.com/blog/?archive=2005_07_10_archive.xml
Para el que no lo conozca.
Saludos