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 http://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

C贸digo CSS en Java/Netbeans

C贸digo CSS en Java/Netbeans

Los objetos como JLabel o JButton nos permiten hacer uso de c贸digo CSS en su propiedad TEXT, asi podemos adornar el text...

Consultas con ADO.NET

Consultas con ADO.NET

ADO.NET proporciona un puente entre los objetos creados en VB o C# 聽y la base de datos MySQL asociada a la aplicaci贸n, a...

Botones circulares de Google Plus en java

Botones circulares de Google Plus en java

Continuaci贸n del tutorial “Google Circles en java” o.O 馃檪 La Interfaz El proyecto consta de una sola interfaz...

Blog MVC – Consultas Ajax a la base de datos [p5]

Blog MVC – Consultas Ajax a la base de datos [p5]

Quinta parte de la serie de tutoriales “Creaci贸n de un blog siguiendo el patr贸n MVC (Modelo, Vista y Controlador)...

Desarrollo de juegos con Libgdx y Android Studio

Desarrollo de juegos con Libgdx y Android Studio

De las pocas herramientas disponibles entre聽librer铆as, frameworks, engines, etc聽para el desarrollo de videojuegos en len...

Capturar foto desde una webcam con Java Media Framework

Capturar foto desde una webcam con Java Media Framework

Como se vio en un post anterior (Capturar video de una webcam con JMF) la captura de un video desde una webcam utilizand...

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

En este post veremos como imprimir secciones de un formulario en java implementando la聽Interface Printable. La clase que...

En este post aprenderemos lo que es la clonaci贸n聽de objetos en java o lo que es lo mismo, generaci贸n de nuevas instancia...

El 铆ndice TIOBE (TIOBE, The Importance of Being Earnest – “La importancia de ser honesto” – refe...

SDKMAN!聽es una herramienta para la administraci贸n de versiones paralelas de varios programas de desarrollo de software c...

Android Bolivia

MAUS