destacados

Gabriel Da Silva

Portafolio del ilustrador y director de arte brasileño, aunque afincado en Madrid, Gabriel Da Silva.

B&W Helmut Newton

Selección de fotografías en blanco y negro de uno de los fotógrafos más conocidos de las últimas décadas, Helmut Newton.

Judith Erwes

Fotógrafa afincada en Londres con un estilo que combina la moda, el humor y la estética retro.

Jody Rogac

Nacida en Inglaterra y criada en Canadá, Jody Rogac en la actualidad vive y trabaja en Brooklyn. Sus trabajo ha obtenido diversos galardones.

Publicaciones

FLASH Y XML (IV): Extraer datos de un documento XML

07/12/2004 00:00:00

Vamos a realizar un pequeño ejemplo de navegación a través de un documento XML. Utilizaré bastantes gráficos para una mejor comprensión.

Utilizaremos el mismo xml que en el tutorial anterior sobre este tema.

Yo mismo Primera carga de un xml cualquiera

2.-Lo guardamos con el nombre "documento1.xml" en la misma carpeta donde vayamos a crear el archivo Flash.
3.- Creamos 3 cajas de texto dinámico donde cargaremos los datos de nuestro XML. Le asignamos como nombre de instancia: "remitente_txt", "asunto_txt", "destinatario_txt".
4 .- Vamos a ir añadiendo el Actionscript paso a paso.
5 .- Lo primero que hemos de hacer es crear una instancia XML, usando para ello el objeto XML.

var mi_xml = new XML();

6 .- Ignoramos los espacios en blanco durante el proceso de análisis del documento XML. Mi experiencia es que activándolo evitaremos errores de proceso.

mi_xml.ignoreWhite = true;

7 .- Aqui nos detenemos y vamos a analizar paso a paso la navegación por el XML. Lo primero que tenemos que tener en cuenta es que el nodo raíz no es el nodo raíz de nuestro documento xml (<NOTA></NOTA>) sino que el nodo raíz es la instancia que hemos creado (mi_xml) y por tanto el nodo <NOTA></NOTA> será el hijo de este objeto XML.

var miRaiz = mi_xml.firstChild

firstChild evalúa el objeto XML especificado y hace referencia al primer nodo secundario en la lista de nodos secundarios del nodo principal.

El siguiente código:

var mi_xml = new XML(); mi_xml.ignoreWhite = true; mi_xml.onLoad = function(success){ if (success){ var miRaiz = mi_xml.firstChild trace(miRaiz); } else{ trace("error"); } } mi_xml.load("documento1.xml");

Nos devolvería:

Yo mismoPrimera carga de un xml cualquiera

9.- Para seguir bajando en la estructura del XML utilizamos la propiedad childNodes. Esta propiedad nos devuelve una matriz (array) de los nodos secundarios del objeto XML especificado. Cada elemento de la matriz es una referencia a un objeto XML que representa un nodo secundario.

var miRaiz = mi_xml.firstChild var missecundarios = miRaiz.childNodes

El siguiente código:

var mi_xml = new XML(); mi_xml.ignoreWhite = true; mi_xml.onLoad = function(success){ if (success){ var missecundarios = mi_xml.firstChild.childNodes trace(missecundarios); } else{ trace("error"); } } mi_xml.load("documento1.xml");

nos daría como resultado:

Yo mismo,Primera carga de un xml,cualquiera

Cómo se puede ver sólo nos devuelve nuestros nodos secundarios. Para acceder a cada uno de nuestros nodos secundarios, utilizaremos la misma notación que para acceder a cada uno de los elementos de una array:

  • mi_xml.firstChild.childNodes[0] nos devolvería <REMITENTE>Yo mismo</REMITENTE>(En este caso también podríamos utilizar mi_xml.firstChild.firstChild por tratarse del primer nodo secundario del objeto mi_xml.firstChild).
  • mi_xml.firstChild.childNodes[1] nos devolvería <ASUNTO>Primera carga de un xml</ASUNTO> y
  • mi_xml.firstChild.childNodes[2] nos devolvería <DESTINATARIO>cualquiera</DESTINATARIO>

9.- Para acceder a cada uno de los objetos del array lo hacemos por medio de firstChild.

mi_xml.firstChild.childNodes[0].firstChild

10.- Por último, para conocer el contenido de cada uno de los nodos podemos utilizar la propiedad nodeValue.

Así asignando a cada caja de texto el contenido que le corresponde, tendríamos

_root.remitente_txt.text = mi_xml.firstChild.childNodes[0].firstChild.nodeValue _root.asunto_txt.text = mi_xml.firstChild.childNodes[1].firstChild.nodeValue _root.destinatario_txt.text = mi_xml.firstChild.childNodes[2].firstChild.nodeValue

con lo que el código resultante sería:

var mi_xml = new XML(); mi_xml.ignoreWhite = true; mi_xml.onLoad = function(success){ if (success){ _root.remitente_txt.text = mi_xml.firstChild.childNodes[0].firstChild.nodeValue _root.asunto_txt.text = mi_xml.firstChild.childNodes[1].firstChild.nodeValue _root.destinatario_txt.text = mi_xml.firstChild.childNodes[2].firstChild.nodeValue } else{ _root.destinatario_txt.text = "ERROR EN LA CARGA" } } mi_xml.load("documento1.xml");

En el próximo tutorial veremos cómo crear un pequeño menú con la ayuda de un xml.

Descargar Archivo Final: descargar

Páginas: 1
comentarioscomentarios