12
Jul
07

Generando un archivo XML

Ahora toca el turno de generar el archivo XML, anteriormente habíamos visto como leer un archivo en formato XML, en el cual habíamos utilizado las librerías proporcionadas por Free Pascal, ahora usaremos otras que son nativas para Lazarus, y aprenderemos como añadir paquetes 😀

Primero creemos la Interfaz, colocando los siguientes componentes:

Componente Nombre(Name) Caption
TForm Form1 Creando XML
TButton BtnCrear &Crear
TEdit EdComentario

Creador de XML

Ahora necesitamos ingresar el código, pero antes llamamos a las librerías que necesitamos para que podamos escribir en XML, que en este caso serán las librerías para lazarus: Laz_DOM y Laz_XMLWrite, para ello debemos añadir un paquete a los requeridos del proyecto, esto lo logramos pulsando el menú Proyecto -> Inspector de Proyecto, con esto nos mostrará una ventana con todos los archivos y paquetes con que se compila nuestra aplicación, pulsamos sobre el botón añadir y luego a la pestaña Nuevo Requerimiento:

Requerimientos

Y seleccionamos CodeTools, que es el paquete que contiene las cabeceras que necesitamos (laz_dom.pas y laz_xmlwrite.pas), esto lo pueden verificar si van a la carpeta components/codetools en donde este instalado lazarus.

Luego de esto, debemos verificar que en la ventana del inspector del proyecto aparezca CodeTools, en la lista de paquetes requeridos:

Ventana del inspector de proyecto

Ahora debemos agregar Laz_DOM y Laz_XMLWrite a la clausula Uses e ingresamos el código para el evento OnClick del BtnCrear:

procedure TForm1.BtnCrearClick(Sender: TObject);
var
  Doc : TXMLDocument;
  DomNodo, DomRaiz, DomDato : TDOMNode;
begin
  //Creamos un documento
  Doc:=TXMLDocument.Create;
  //Creamos la raiz del documento
  //nombrandolo "ejemplo"
  DomRaiz:=Doc.CreateElement('ejemplo');
  //despues de añadir un nodo al documento este es vaciado
  Doc.AppendChild(DomRaiz);
  //por lo tanto recuperamos el puntero
  DomRaiz:=Doc.DocumentElement;
  //Creamos el primer Nodo del documento
  DomNodo:=Doc.CreateElement('PrimerDato');
  //Hacemos un casting a la variable DomNodo
  //de tipo TDOMElement para poder
  //colocarle atributos.
  TDOMElement(DomNodo)['atributo']:='algunvalor';
  //agregamos el nodo al nodo raiz
  DomRaiz.AppendChild(DomNodo);
  //Como la variable DomNodo ha sido vaciada
  //podemos crear otro nodo con la misma
  //variable
  DomNodo:=Doc.CreateElement('segundoDato');
  //creamos tambien un nodo de texto
  DomDato:=Doc.CreateTextNode('contenido');
  //asignacion de parametro al nodo
  TDOMElement(DomNodo)['tipo']:='cadena';
  //Añadimos el nodo de texto al nodo DOMNodo
  DomNodo.AppendChild(DomDato);
  //Al primer nodo hijo (PrimerDato) de la raiz
  //le añadimos el nodo contenido en DomNodo
  DomRaiz.ChildNodes.Item[0].AppendChild(DomNodo);
  //creamos otro nodo pero de comentario
  //con el texto del TEdit
  DomDato:=Doc.CreateComment(EdComentario.Text);
  //añadimos directamente el nodo de comentario
  //al mismo nivel que "PrimerDato"
  DomRaiz.AppendChild(DomDato);
  //Escribimos el archivo
  WriteXMLFile(Doc,'prueba.xml');
  //Liberamos Memoria.
  Doc.Free;
end;

Compilamos, y estamos listos.

Esto nos creará un archivo prueba.xml como este:

<?xml version="1.0"?>
<ejemplo>
  <PrimerDato atributo="algunvalor">
    <segundoDato tipo="cadena">contenido</segundoDato>
  </PrimerDato>
  <!--Escriba su comentario-->
</ejemplo>

Ahora puede probar abrirlo con el proyecto que hicimos anteriormente 🙂

Anuncios

2 Responses to “Generando un archivo XML”


  1. 1 jorgington
    julio 25, 2007 en 6:49 pm

    Pero… ¡qué pedazo de alegría al descubriros! Soy un principiante total, acabo de compilar con lazarus mi primera aplicación recién migradita desde Delphi… y acabáis de ingresar en mis favoritos.

    Saludos, ánimo y gracias

  2. julio 25, 2007 en 11:14 pm

    Gracias, estaremos de nuevo con posts a cada semana después de terminar con la ardua tarea de la organización de CGSOL 😀

    Saludos.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


CGSOL 2008

Publicidad CGSOL 2008

A %d blogueros les gusta esto: