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

Conexi贸n MySQL y C#

En este post vamos a crear una aplicaci贸n sencilla para conectar C# con MySQL. Manos a la obra 馃檪 Necesitamos – Con[...]

Tabla para inventarios de Entradas y Salidas

A veces navegando en la internet buscando novedades , investigando o simplemente perdiendo el tiempo 馃檪 se encuentran cos[...]

C贸digo de Control v7 en JavaScript

En esta oportunidad, se deja a disposici贸n de la comunidad de programadores de Bolivia y tambi茅n porque no, del que quie[...]

M茅todos GET y POST en RestFul y JSON

En este post veremos como enviar solicitudes GET y POST a un API RestFul 聽desde un dispositivo con android. Nuestra apli[...]

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[...]

Generador de Texto ASCII en Java

ASCII acr贸nimo ingl茅s de American Standard Code for Information Interchange (C贸digo Est谩ndar Estadounidense para el Inte[...]