En esta ocasión veremos el tema de Persistencia de datos con xml y para el caso usaremos la clase XMLEncoder del paquete java.beans.XMLEncoder, que nos permite serializar diferentes tipos de datos sean primitivos o de objetos y que nos será de gran utilidad para ocaciones donde necesitemos almacenar datos con su estructura completa (valor y tipo de dato).
Crearemos un bean llamado
Usuario y tendrá los siguientes atributos: nombre,apellido,edad,correo.
quedando así
Crearemos un bean llamado
Usuario y tendrá los siguientes atributos: nombre,apellido,edad,correo.
quedando así
public class Usuario { private String nombre; private String apellido; private int edad; private String correo; /** * @return the nombre */ public String getNombre() { return nombre; } /** * @param nombre the nombre to set */ public void setNombre(String nombre) { this.nombre = nombre; } /** * @return the apellido */ public String getApellido() { return apellido; } /** * @param apellido the apellido to set */ public void setApellido(String apellido) { this.apellido = apellido; } /** * @return the edad */ public int getEdad() { return edad; } /** * @param edad the edad to set */ public void setEdad(int edad) { this.edad = edad; } /** * @return the correo */ public String getCorreo() { return correo; } /** * @param correo the correo to set */ public void setCorreo(String correo) { this.correo = correo; } /** * */ public Usuario() { // TODO Auto-generated constructor stub } }
Seguido creamos una clase SerializarDatos
public class SerializarDatos { public SerializarDatos() { } public boolean xmlEnconder(String rutaIn, Usuario usuariosIn) throws FileNotFoundException { FileOutputStream fileOutputStream; XMLEncoder encoder; Usuario user; fileOutputStream = new FileOutputStream(rutaIn); encoder = new XMLEncoder(fileOutputStream); user = new Usuario(); user.setNombre(usuariosIn.getNombre()); user.setApellido(usuariosIn.getApellido()); user.setEdad(usuariosIn.getEdad()); user.setCorreo(usuariosIn.getCorreo()); encoder.writeObject(user); encoder.close(); return true; } }
Agregamos la clase Teclado y creamos la clase
public class ProcesarDatos { /** * */ public ProcesarDatos() { // TODO Auto-generated constructor stub } public void leerDatos(String rutaIn) { StringBuffer buffer; FileInputStream fileInputStream; XMLDecoder decoder; Usuario usuario; try { fileInputStream = new FileInputStream(rutaIn); decoder = new XMLDecoder(fileInputStream); usuario = (Usuario) decoder.readObject(); buffer = new StringBuffer(); buffer.append("Nombre: ").append(usuario.getNombre()).append("\n"); buffer.append("Apellido: ").append(usuario.getApellido()).append("\n"); buffer.append("Edad: ").append(usuario.getEdad()).append("\n"); buffer.append("Correo: ").append(usuario.getCorreo()); System.out.println(buffer.toString()); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void escribirDatos(String rutaIn) { Usuario usuario; SerializarDatos serializarDatos; String strDatos; usuario = new Usuario(); strDatos = ""; try { System.out.print("Ingresar nombre:"); strDatos = Teclado.lectura(); usuario.setNombre(strDatos); System.out.println(); System.out.print("Ingresar Apellido:"); strDatos = Teclado.lectura(); usuario.setApellido(strDatos); System.out.println(); System.out.print("Ingresar Edad:"); strDatos = Teclado.lectura(); usuario.setEdad(Integer.parseInt(strDatos)); System.out.println(); System.out.print("Ingresar Correo:"); strDatos = Teclado.lectura(); usuario.setCorreo(strDatos); System.out.println(); System.out.println("Procesando información introducida."); serializarDatos = new SerializarDatos(); serializarDatos.xmlEnconder(rutaIn, usuario); System.out.println("Proceso Terminado."); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
Y por último agregamos la clase Principal que será nuestro programa principal.
public class Principal { /** * @param args */ public static void main(String[] args) { String strOpcion = ""; String rutaIn; rutaIn = "/home/arielb/ampliandoconocimientosjava/usuarios.xml"; ProcesarDatos procesarDatos; do { System.out.println("\n\n\t Serialización de datos xml"); System.out.println("\t\t1 - Escribir datos."); System.out.println("\t\t2 - Leer datos."); System.out.println("\t\t3 - Salir."); try { procesarDatos = new ProcesarDatos(); strOpcion = Teclado.lectura(); switch (Integer.parseInt(strOpcion)) { case 1: procesarDatos.escribirDatos(rutaIn); break; case 2: procesarDatos.leerDatos(rutaIn); break; case 3: System.out.println("Saliendo del sistema"); break; default: System.out.println("Opción no considerada"); break; } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } while (!strOpcion.trim().equals("3")); } }
Al tener estas clase podremos ejecutar nuestro programa y después de introducir los datos que solicita el programa podremos buscar en la ruta que colocamos en la variable rutaIn.
En esa ruta buscaremos un archivo llamado archivo.xml o el nombre que pusimos a nuestro gusto. el contenido del archivo según los datos que ingrese son:
En esa ruta buscaremos un archivo llamado archivo.xml o el nombre que pusimos a nuestro gusto. el contenido del archivo según los datos que ingrese son:
C
Como verán existen dos métodos en la clase Procesar datos, uno que nos permite escribir los datos en el archivo y el otro que nos permite leerlos.
No hay comentarios:
Publicar un comentario