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

Gu铆a b谩sica: Trabajando con GitHub y Netbeans

Gu铆a b谩sica: Trabajando con GitHub y Netbeans

Netbeans tiene soporte para trabajar con varias herramientas de control de versiones, GIT es una de ellas, esta herramie...

Rompecabezas [C贸digo Fuente]

Rompecabezas [C贸digo Fuente]

Hace tiempo me pidieron el c贸digo fuente de un juego de Puzzle de Neon Genesis Evangeli贸n, este juego es completo, tiene...

Laberinto del Terror (C贸digo Fuente + juego)

Laberinto del Terror (C贸digo Fuente + juego)

El laberinto del terror es un juego en el que haciendo uso del rat贸n y de tu pulso de borracho debes cruzar distintos la...

Animaciones b谩sicas con Pygame

Animaciones b谩sicas con Pygame

En tutoriales pasados cre谩bamos demasiadas l铆neas de c贸digo en el mismo lugar para dibujar en la pantalla, cosa que nos...

Ejercicios Resueltos C Sharp

Ejercicios Resueltos C Sharp

1. Dado N n煤meros enteros ingresados por teclado, determine el promedio de estos 01 static void Main(string[] args) 02 {...

jFace – Crea retratos hablados

jFace – Crea retratos hablados

La policia, el FBI u otros organismos similares utilizaban a dibujantes para realizar el “retrato hablado” d...

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

JSON es un formato de texto ligero para el intercambio de datos ampliamente usado en los Servicios Web. En este post uti...

En este post conoceremos algunos de los operadores de comparaci贸n que existen en Linux y realizaremos unos ejercicios pa...

En este post conocernos lo que son las Estructuras de Control IF en los script de Bash.聽Estas estructuras nos ayudan a c...

Todo producto tecnol贸gico tiene un ciclo de vida, algunos bastante corto otros muy largo, podemos mencionar el software...

Android Bolivia

MAUS