Recorrer XML en AS3
El siguiente código carga un XML y recorre sus nodos y atributos imprimiendolos en pantalla.
El XML que he utilizado es el siguiente:
1 2 3 4 5 6 7 8 9 10 |
<Discos> <Disco puntuacion="10"> <grupo id="20">The Knife</grupo> <titulo>Deep Cuts</titulo> </Disco> <Disco puntuacion="7"> <grupo id="21">Jose Gonzalez</grupo> <titulo>Veneer</titulo> </Disco> </Discos> |
Y el código AS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
//Importo las clases necesarias import flash.display.*; import flash.events.*; import flash.net.*; //Asigno la url que se va a cargar var url:String = "discos.xml"; var XmlExterno:XML; //Carga el XML function CargarXML() { //Creo el objeto cargador var loader:URLLoader = new URLLoader(); //Le añado los listeners ponerListeners(loader); //Creo el objeto que contendrá la petición var peticion:URLRequest = new URLRequest(url); //Cargo la petición loader.load(peticion); } //Añade los listeners al cargador function ponerListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); } //Funcion que se ejecuta cuando termina la descarga. function completeHandler(event:Event):void { var cargador:URLLoader = event.target as URLLoader; XmlExterno = new XML(cargador.data); for each(var nodo:XML in XmlExterno.elements()){ //Devuelve el atributo puntuacion trace(nodo.@puntuacion); //Devuelve el contenido del nodo <grupo> trace(nodo.grupo); //Devuelve el valor del atributo id dentro del nodo <grupo> trace(nodo.grupo.@id); //Devuelve el contenido del nodo titulo trace(nodo.titulo); } } //Empezamos CargarXML(); |