Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Base de Datos / Ejercicios / Java / Crear XML desde una base de datos con jDom

Crear XML desde una base de datos con jDom

Autor 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

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Ecuación de segundo grado

Ecuación de segundo grado

Problema: Implemente el código necesario en Kotlin para resolver una ecuación de segundo grado de números reales: Soluci...

Botón en java de Windows 8 Modern UI

Botón en java de Windows 8 Modern UI

En este tutorial crearemos un botón con el estilo del nuevo windows 8 Modern UI que primero se conoció como Metro UI.  E...

Formulario de autenticación circular

Formulario de autenticación circular

En este tutorial crearemos un formulario de logueo de forma circular usando el lenguaje java y el IDE de Netbeans. Neces...

Capturar webcam con VB.NET

Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames...

Determinante de una matriz NxN en javascript

Determinante de una matriz NxN en javascript

Notación matemática formada por una tabla cuadrada de números, u otros elementos, entre dos líneas verticales; el valor...

Crear ayuda HTML para programa con JavaFX Swing

Crear ayuda HTML para programa con JavaFX Swing

En este post veremos como crear una aplicación de ayuda al usuario similar al extinto javahelp. Pero en esta oportunidad...

5 comentarios en “Crear XML desde una base de datos con jDom”

  1. Andrea dice:

    Hola, la verdad me ha sido de bastante ayuda, pero ahora necesito el mismo XML leerlo e insertar sus valores en otra BD con la misma tabla, que me recomiendas para hacer el proceso a la inversa?

    1. Mouse dice:

      Pues solo debes parsear el XML con JDOM asi obtienes todos los campos del archivo y estos los vas agregando con un ciclo repetitivo a la base de datos, como es la misma tabla no hay ningun problema

  2. Jorge dice:

    Hola, me parece interesante lo ke comentas aki, pero lo veo un poco dificil y tengo una duda!, Tengo una base de datos como no entiendo mucho de esto te dire ke aparentemente es paradox (la puedo abrir con access y modificarla, y el programa que la usa sigue normal) y lo que quiero es ke cada vez que yo emita una factura pueda grabar dicha factura en un xml(no se si los xml son diferentes, tengo ke crear una plantilla o todos son iguales solo cambian los datos), la cuestion es que es para factura electronica y esto me pide mi proveedor de facturas electronicas un archivo xml por factura ? puedes ayudarme ? Gracias por el tiempo prestado. Un saludo

    1. Mouse dice:

      🙂
      1. si puedes abrir tu base de datos y modificar, modificaras los datos pero no la estructura en si, si haces eso, tu aplicación ya no funcionaria.
      2. Los XML no son iguales, depende de los datos que tu quieras almacenar en ellos pueden variar poco o mucho entre ellos.
      3. Las facturas electrónicas no son iguales, si tu proveedor te pide un archivo XML, debe tener este un standar con el cual él trabaja, debes solicitar que te de una plantilla pata que tu puedas adecuar tus datos en tu XML.

  3. isacc dice:

    amigo muy buen aporte pero queria que me orientaras mas en solo lo que corresponde al jdom y java desde netbeans sabes esque tengo que realizar un trabajo en la u en la cual me pide que con la libreria jdom cree archivos xml Me podria orientar mucho mas acerca del tema

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Existe una gran cantidad de contenido sobre productividad, trucos, consejos y trabajo y más. Pero, ¿Qué pasa con esos mo...

En este post te enseño a usar una herramienta de Inteligencia Artificial para animar tus fotografias y esto completament...

Si trabajas con redes sociales (RRSS) a continuación te muestro tres herramintas gratuitas que te ayudaran a la hora de...

Por lo general se usan transacciones a nivel base de datos y posteriormente se llaman estos a través de procedimientos a...

Herramientas

Generador de Enlaces a Whatsapp