Mostrando entradas con la etiqueta xml. Mostrar todas las entradas
Mostrando entradas con la etiqueta xml. Mostrar todas las entradas

martes, marzo 11, 2014

Hola mundo con JAXB

Esta ves regreso con un pequeño ejemplo para utilizar JAXB, una herramienta muy útil para manejar documentos XML. Esta se encarga de transformar una clase Java a XML y a la inversa. sin mas empiezo con el ejemplo. 

En este ejemplo utilizare 2 objetos: "usuario" y dentro de este un bean "empresa".


import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Empresa {
 private int id;
 private String nombre;
 
 public int getId() {
  return id;
 }
 @XmlAttribute
 public void setId(int id) {
  this.id = id;
 }
 public String getNombre() {
  return nombre;
 }
 @XmlElement
 public void setNombre(String nombre) {
  this.nombre = nombre;
 }
}


import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Usuario {
 
 
 private String nombre; 
 private String apellido; 
 private int id;
 private Empresa empresa;

 public String getNombre() {
  return nombre;
 }
 @XmlElement
 public void setNombre(String nombre) {
  this.nombre = nombre;
 }
 public String getApellido() {
  return apellido;
 }
 @XmlElement
 public void setApellido(String apellido) {
  this.apellido = apellido;
 }
 public int getId() {
  return id;
 }
 @XmlAttribute
 public void setId(int id) {
  this.id = id;
 }
 public Empresa getEmpresa() {
  return empresa;
 }
 @XmlElement
 public void setEmpresa(Empresa empresa) {
  this.empresa = empresa;
 }
 
}

Se puede apreciar que estoy utilizando 3 anotaciones diferentes:

  •  @XmlRootElement .- esta anotación indica que la clase sera un bloque xml.
  •  @XmlElement .- esta anotación indica que sera un elemento del bloque xml.
  •  @XmlAttribute .- indica que la variable sera un atributo distintivo del bloque xml.
Ahora toca el turno de la clase encargada de convertir los beans de java a bloques xml.


import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

//clase que hara el marshalling
public class JavaToXML {
 
 public void marshalling( String rutaArchivo , Usuario bean ){
  try {
import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

//clase que hara el marshalling
public class JavaToXML {
 
 public void marshalling( String rutaArchivo , Usuario bean ){
  try {
   //creamos un archivo
   File file = new File( rutaArchivo );
  
   //generamos una instancia de nuestro bean principal
   JAXBContext jaxbContext;  
   jaxbContext = JAXBContext.newInstance(Usuario.class);
   
   //preparamos la formacion del xml
   Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
   //indicamos que el resultado xml debe estar con formato, es decir: identado y no en un renglon
   jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
  
   //indicamos los destinos del xml resultante, en este caso el archivo y la consola
   jaxbMarshaller.marshal( bean , file);
   jaxbMarshaller.marshal( bean , System.out);
   
  } catch (JAXBException e) {
   e.printStackTrace();
  }
 }
 
 public static void main( String args [] ){
  JavaToXML ejemplo = new JavaToXML();
  
  Usuario bean = new Usuario();
  bean.setNombre( "perla" );
  bean.setApellido( "leal" );
  bean.setId( 12 );
  
  Empresa beanE = new Empresa();
  beanE.setId( 2 );
  beanE.setNombre( "Java-limos" );
  bean.setEmpresa( beanE );
  
  String rutaArchivo = "C:\\myEjemplo.xml";
  
  ejemplo.marshalling( rutaArchivo , bean );
 }
 
}

si ejecutamos el siguiente código obtendremos un archivo como el siguiente:




    leal
    
        Java-limos
    
    perla

proseguimos a crear la clase encargada de convertir el xml en beans de java



import java.io.File;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

//Unmarshaller
public class XMLToJava {

 public void unmarshalling( String rutaArchivo ){
  try {
   //indicamos el archivo xml
   File file = new File( rutaArchivo );
   
   //creamos una instancia del bean principal
   JAXBContext jaxbContext = JAXBContext.newInstance(Usuario.class);
   
   //preparamos el convertidor xml a java
   Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
   
   //extraemos la informacion
   Usuario usuario = (Usuario) jaxbUnmarshaller.unmarshal(file);

   System.out.println( "nombre: " + usuario.getNombre() );
   System.out.println( "apellido: " + usuario.getApellido() );
   System.out.println( "id: " + usuario.getId() );
   System.out.println( "empresa: " + usuario.getEmpresa().getNombre() );
   
  } catch (JAXBException e) {
   e.printStackTrace();
  }
 }
 
 public static void main( String args [] ){
  XMLToJava ejemplo = new XMLToJava();
  
  String rutaArchivo = "C:\\myEjemplo.xml";
  ejemplo.unmarshalling( rutaArchivo );
 }
}

Como se puede ver es un código muy sencillo, basta con leer un poco la documentación y ponerse a jugar con el para poder crear xml mas complejos.

saludos. 

lunes, abril 09, 2012

CONVERSIONES ENTRE FORMATOS DE TEXTO

Despues de ya un tiempo sin publicar una nueva entrada, regreso con un pequeño post muy util para convertir caracteres en formatos javacript, java, sql, html, xml.

Es una clase contenida en el paquete "commons-lang" llamada StringEscapeUtils, para el ejemplo utilizo la version 2.3 de commons-lang.

Esta clase es muy util, mas cuando tenemos que presentar datos en pantalla, por medio de jquery por ejemplo, no por jquery como tal, si no por en casi todas las ocaciones ie, que no realiza las conversiones como lo hacen los otros browsers.


y sin más, pongo el ejemplo:
import org.apache.commons.lang.StringEscapeUtils;

public class ConversionCaracteres {
 
 public static void convierteJavaScript( String texto ){
  System.out.println( "Convierte texto java : "+ texto 
+" a javaScript : " + StringEscapeUtils.escapeJavaScript(texto) );
 }
 
 public static void convierteJava( String texto ){
  System.out.println( "Convierte texto java : "+ texto 
+" a java : " + StringEscapeUtils.escapeJava(texto) );
 }
 
 public static void convierteXml( String texto ){
  System.out.println( "Convierte texto java : "+ texto 
+" a xml : " + StringEscapeUtils.escapeXml(texto) );
 }

 public static void convierteHtml( String texto ){
  System.out.println( "Convierte  texto java : "+ texto 
+"a html : " + StringEscapeUtils.escapeHtml(texto) );
 }
  
 
 public static void convierteJavaScriptAJava( String texto ){
  System.out.println( "Convierte texto javaScript : "+ texto 
+" a java : " + StringEscapeUtils.unescapeJavaScript(texto) );
 }
 
 public static void convierteJavaAJava( String texto ){
  System.out.println( "Convierte texto java : "+ texto 
+" a java : " + StringEscapeUtils.unescapeJava(texto) );
 }
 
 public static void convierteXmlAJava( String texto ){
  System.out.println( "Convierte texto xml : "+ texto 
+" a java : " + StringEscapeUtils.unescapeXml(texto) );
 }

 public static void convierteHtmlAJava( String texto ){
  System.out.println( "Convierte  texto html : "+ texto 
+"a java : " + StringEscapeUtils.unescapeHtml(texto) );
 }

 public static void main(String[] args) {
  
//  convierte java a otros formatos
  String texto = "Información con acentos.";
  convierteJavaScript( texto );
  convierteJava( texto );
  convierteXml( texto );
  convierteHtml( texto );
  
  System.out.println("\n");
  
//  convierte otros formatos a java
  String t1="Informaci\u00F3n con acentos.";
  String t2="Informaci\u00F3n con acentos.";
  String t3="Información con acentos.";
  String t4="Información con acentos.";
  convierteJavaScriptAJava( t1 );
  convierteJavaAJava( t2 );
  convierteXmlAJava( t3 );
  convierteHtmlAJava( t4 );
 }
}


para ejemplos menos cuchos pongo la ligua del api: Pulsa

miércoles, octubre 19, 2011

Creando una aplicacion con JSF RichFaces parte IV

Despues de una larga ausencia, regreso con todas las ganas, a terminar este mini tutorial de richfaces.
En esta entrada señalare lo basico de richfaces y jsf como tal.

1.- Al utilizar jsf nos olvidamos de la mayoria de las etiquetas html que utilizabamos anteriormente
pero aparecen otras:
     <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
     <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
     <%@taglib prefix="rich" uri="http://richfaces.org/rich"%>
     <%@taglib prefix="a4j" uri="http://richfaces.org/a4j"%>
2.- El prefijo f
/**
* son el conjunto de etiquetas basicas de jsf puro, donde podemos encontrar
* vistas, select, validadores, es de algun modo poco utilizada
*/
3.- El prefijo h
/**
* en esta etiqueta podemos encontrar componentes html, como tablas, formularios
* cajas de texto, etiquetas, botones, selectores, etiquetas para imprimir mensajes
*/
4.- El prefijo rich
/**
* en esta etiqueta podemos encontrar, tablas, validadores, calendarios, selectores,
* menus de contexto, menus, arboles, efectos, etiquetas para utilizar google maps.
*/
5.- El prefijo a4j
/**
* con esta etiqueta utilizamos componentes ajax, como listeners,
* includes, botones, link, funciones js, formularios etc.
*/
6.- Donde agregamos los prefijos en nuestro jsp?

     <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
     <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
     <%@taglib prefix="rich" uri="http://richfaces.org/rich"%>
     <%@taglib prefix="a4j" uri="http://richfaces.org/a4j"%>
7.- Estructura basica de un jsp con jsf

    <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
     <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
     <%@taglib prefix="rich" uri="http://richfaces.org/rich"%>
     <%@taglib prefix="a4j" uri="http://richfaces.org/a4j"%>




    
        
        
    



8.- Definicion del faces-config.xml



    /index.jsp
    
        iniciar
        /inicio.jsp
        
    



  /inicio.jsp




AHORA PODEMOS REALIZAR UNA PEQUEÑA APLICACION JSF, Q ES LO QUE
SE PRETENDE EN LA SIGUIENTE ENTRADA... SALUDOS!

miércoles, agosto 10, 2011

Creando una aplicacion con JSF RichFaces parte II

Hola que tal, despues de una larga ausencia regreso con este tutorial de richfaces, espero no ausentarme tanto otra ves :P.

En la entrada anterior vimos como dejar nuestra aplicacion lista para utilizar este framework, en esta ocacion agregaremos la internacionalizacion y dejaremos habilitado nuestro log4j.

1.- Crearemos el paquete donde estaran nuestros resources y creando los resources
/*
     * El paquete lo llamare com.tutorial.rich.resources
     * crearemos dos resources los cuales llamaremos
     * ApplicationResources_en_EN.properties y
     * ApplicationResources_es_MX.properties respectivamente
     * ApplicationResources_ es el nombre generico que les damos 
     * a nuestros resources, por lo cual le podemos dar cualquier nombre
     * es_MX o en_EN son los codigos de lenguaje y pais
     * si quieres saber mas de esto busca informacion sobre la clase Locale de java
     */

     /* La informacion contenida en ApplicationResources_en_EN.properties
     *
     * login_lblTituloPag=Login
     * login_lblUsuario=User
     * login_lblPassword=Password
     */

     /* La informacion contenida en ApplicationResources_es_MX.properties
     *
     * login_lblTituloPag=Login
     * login_lblUsuario=Usuario
     * login_lblPassword=Contraseña
     */

     /*
     * ¿ Por que no usuamos los timpicos login.lbl.titulo.pag 
     * y utilizamos login_lblTituloPag ?
     * por que a diferencia de Strust por ejemplo, jsf reconoce el punto
     * como si intentaramos acceder a un elemento de un objeto
     * por lo tanto utilizamos el guion bajo, "para este ejemplo"
     * no es una norma
     */

2.- Modificando el faces-config



    


     
          com.tutorial.rich.resources.ApplicationResources
          msgs
     
     
          en_EN
     








3.- Agregando un JSP con etiquetas, que cambiaran dependiendo del idioma
/*
     * En el jsp que se creo por default, (index) agregaremos en la parte superior 
     * las siguientes taglibs
     */

     <%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
     <%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
     <%@taglib prefix="rich" uri="http://richfaces.org/rich" %>

     /*
     * En el body del jsp agregaremos lo siguiente
     */
     
          
               
                    
                         						
                    
                    

/* * no explicare el porque de cada etiqueta, hasta la siguiente entrada * pero observen que para acceder a los mensajes utilizo por ejemplo * * en value hago el llamado a la etiqueta msgs que declaramos en el faces-config * luego solo hago referencia a la etiqueta del resource que deseo utilizar */
4.- Configurando web.xml

     
     
     
          faces/index.jsp
     


5.- Probando la aplicacion
/*
      * para probar solo es mover el codigo en el faces-config  de
      * en_EN a
      * es_MX
      */
6.- Configurando log4j