01 marzo 2008

Gambas - Escribir un XML


Los archivos XML forman hoy en dia un estandar aceptado globalmente para la transferencia de información.
Es de libre uso, cumple especificaciones, y es independiente tanto del lenguaje como de la plataforma.Esto quiere decir, que mediante este formato pueden comunicarse sistema hechos en distintos lenguajes y que corran sobre distintas plataformas.
Ya que tanto Gambas como Java me parecen lenguajes muy interesantes, poderosos y de facil aprendizaje; voy a aportar mis escasos conocimientos para que queden plasmados en este blog.

Bien, en esta oportunidad vamos a ver algo de Gambas respecto al XML.
Gambas posee distintos Componentes, entre ellos tenemos el de Programción XML. El mismo se compone de:

  • gb.xml
  • gb.xml.xslt
  • gb.xml.rpc

El primero cuenta con las siguientes clases:

  • xmldocument
  • xmlnode
  • xmlreader
  • xmlreadernodetype
  • xmlwriter

Ejemplo:

Se tiene una pequeña librería, y recientemente cuanta con internet y abrió un sucursal en un pueblo cercano. Se decea enviar por internet los datos de los nuevos libros que hayan ingresado para que la sucursal este al tanto de las novedades.
Supongamos que se tiene el siguiente esquema


Y se desea enviar a la sucursal solamente los datos correspondientes a dos libros nuevos que entraron en el dia.
En este caso el sistema que posea la librería deberia poder generar un pequeño archivo xml, y se pueda transmitir por internet para que la sucursal absorba esa información.
Definicion de Archivo
Nuestro archivo tendria la siguiente definición (sin los *, les puse porque sino no se mostraba bien):

<*?xml version=”1.0”?>
<*envios>
<*transaccion_id>115451
<*transaccion_tipo>1
<*libro>
<*id_libro>1235487
<*nombre_libro>odisea
<*editorial>anaya
<*genero>clasica
<*/libro>
<*/envios>

Hecho esto, procedemos a escribir el codigo fuente para escribir esa informacion en un archivo.
Creamos un proyecto por consola, que haga referencia a gb.xml
Dentro del main escribimos el siguiente codigo:

DIM xml AS XmlWriter
xml = NEW XmlWriter

xml.Open("", TRUE)
xml.StartElement("envios")
xml.Element("transaccion_id", "115451")
xml.Element("transaccion_tipo", "1")
xml.Element(“transaccion_fecha” , “20080228”)
xml.StartElement("libro")
xml.Element("id_libro", "1235487")
xml.Element("nombre_libro", "odisea")
xml.Element("editorial", "anaya")
xml.Element("genero", "clasica")
xml.EndElement()
xml.EndElement()
PRINT xml.EndDocument()

Primero, se declara y se instancia un XmlWriter en “xml”, luego abrimos un archivo xml, y comienza su escritura.
StartElement, seria la etiqueta de inicio
Element, seria el elemento en si, pero cuando se trata de una estructura simple como por ejemplo “1235487”, entonces se puede resumir el StartElement, Element y EndElement en una sola linea colocando primero la etiqueta, y luego el contenido de la etiqueta, entonces quedaria “xml.Element("id_libro", "1235487")”
En el final, el PRINT xml.EndDocument, nos mostrará por consola la salida del documento xml.

Esta es con propósito de ver como quedaria, sin embargo debemos cambiar un par de cositas para que el código cree un archivo xml con la estructura creada.

xml.Open(User.Home & "/envio.xml", TRUE)
...
xml.EndDocument()

En el Open, agregamos referencia a un archivo físico para que lo cree, y en el EndDocument le quitamos en PRINT.
De esta forma el EndDocument generará el archivo xml.
Eso es todo, si van a su directorio Home, verán el archivo creado.
Queda para la siguiente entrega la absorción de un documento xml.

Hasta pronto, que estén bien.


Johnyx.

1 comentario:

  1. Muy bien explicado,Gracias por tomarse el tiempo, ahora para enviarlo por Internet desde GAMBAS, Como seria ...

    ResponderEliminar