Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Base de Datos / Ejercicios / Java / Crear XML desde una base de datos con jDom

Crear XML desde una base de datos con jDom

Por jc mouse sábado, marzo 10, 2012

Un post cortito de fin de semana 🙂 , este trata de la forma de extraer la información de una base de datos formar una estructura XML y guardar este en disco.

¿Que utilizaremos?

  • JDOM: Libreria de código abierto para el manejo de archivos XML
  • mysql-connector-java-5.1.6 o sup: Libreria para la conexion entre MySQl y Java
  • Netbeans 6.9: Editor java, cualquier otro editor :/ es igual

1. Lo primero que necesitamos es crear una base de datos y añadir una tabla «persona», el código es:

CREATE TABLE persona (
  ci varchar(7) NOT NULL,
  nombre varchar(60) NOT NULL,
  fecha_nac datetime NOT NULL,
  profesion varchar(32) NOT NULL,
  PRIMARY KEY  (ci)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Por demás esta decir que debes añadirle algunos datos 🙂

2. Crea un nuevo proyecto en Netbeans o el IDE que utilices y crea una nueva clase que llamaremos «xml.java».

import java.io.*;
import java.util.*;
import java.sql.*;
import org.jdom.*;
import org.jdom.output.*;
/**
 * @web https://www.jc-mouse.net/
 * @author Mouse
 */
public class xml {

    //archivo destino
    private String file="C:/miarchivo.xml";
    /* DATOS PARA LA CONEXION */
    private String db = "BASE_DE_DATOS";
    private String user = "USUARIO";
    private String password = "PASSWORD";
    private Connection conn = null;

    public xml(){
       conectar();
    }

    private void conectar()
   {
       String url = "jdbc:mysql://localhost/"+this.db;
       try{
         //obtenemos el driver de para mysql
         Class.forName("com.mysql.jdbc.Driver");
         //obtenemos la conexión
         conn = DriverManager.getConnection(url, this.user , this.password );
         if (conn!=null){
            System.out.println("OK base de datos "+this.db+" listo");
         }
      }catch(SQLException e){
         System.out.println(e);
      }catch(ClassNotFoundException e){
         System.out.println(e);
      }
   }

    public void getXML()
    {
        Document doc = new Document();
        //etiqueta principal
        Element root = new Element("DataBase");
        doc.setRootElement(root);
        try {
            //consulta
            String q = "SELECT * FROM persona";
            Statement stmt = conn.createStatement();
            ResultSet resultset = stmt.executeQuery(q);
            ResultSetMetaData resultmetadata = resultset.getMetaData();
            //obtiene la cantidad de columnas de la tabla
            int numCols = resultmetadata.getColumnCount();
            while (resultset.next()) {
                List elmts = new ArrayList();
                for (int i=1; i <= numCols; i++) {
                    //obtiene nombre de columna
                    String colName = resultmetadata.getColumnName(i);                    
                    //Obtiene el contendio de la celda
                    String colVal = resultset.getString(i);                    
                    //forma los elementos para el XML
                    Element elmt = new Element(colName);
                    elmt.setText(colVal);
                    elmts.add(elmt);
                }
                //para la etiqueta
                Element row = new Element("registro");
                //añade el registro en xml
                row.setContent(elmts);
                root.addContent(row);                
            }
            //cierra database
            resultset.close();
            stmt.close();
            conn.close();
            // Graba el archiv XML en disco
            XMLOutputter outputter = new XMLOutputter( Format.getPrettyFormat() );
            try {
               outputter.output(doc, new FileOutputStream ( file ));
               System.out.println("Arhivo XML creado en " + file);
            }
            catch (IOException e) {
                System.out.println(e);
            }
        } catch (SQLException e) {
               System.err.println(e);
        }
    }

}

Ya para terminar ejecuta la clase desde el main y listo 🙂

<?xml version="1.0" encoding="UTF-8"?>
<DataBase>
  <registro>
    <ci>0000001</ci>
    <nombre>Ana Lisa Melano</nombre>
    <fecha_nac>1988-03-08 22:18:58.0</fecha_nac>
    <profesion>Bailarina</profesion>
  </registro>
  <registro>
    <ci>0000002</ci>
    <nombre>Cindy Entes</nombre>
    <fecha_nac>1996-03-26 22:20:05.0</fecha_nac>
    <profesion>Odontologo</profesion>
  </registro>
  <registro>
    <ci>0000003</ci>
    <nombre>Zoila Concha Tumadre</nombre>
    <fecha_nac>1987-03-28 22:21:19.0</fecha_nac>
    <profesion>Astronauta</profesion>
  </registro>
</DataBase>

 

Eso es todo, descargate el ejemplo «jdomdb» gratis 🙂

Saludos benignos digo malignos 🙂

Tags

Artículos similares

JTable con imágenes

En este post dejo una forma de como utilizar imágenes en un JTable ademas de implementar MouseListener para realizar dif[...]

Crea un efecto Flip en java swing

Entre los correos y mensajes en facebook y whatsapp que me llegan (y de entrada pido perdón a quienes no puedo responder[...]

Escalar imagen en java

Esta aplicacion permite escalar una imagen desde java sin perder las proporciones de la misma, utiliza SCALE_AREA_AVERAG[...]

JLabel: Escalar imagen

El componente swing JLabel nos permite cargar una imagen con la propiedad setIcon, sin embargo la imagen no toma el tama[...]

Métodos Numéricos: Sustitución Directa

El Método de Sustitución Directa básicamente consiste en asumir un valor, reemplazar el mismo en la función despejada y[...]

Material Design: Notificaciones (Snackbar)

Material Design introduce una nueva forma de mostrar notificaciones al usuario, estos son los snackbar, similares a los[...]