domingo, 16 de diciembre de 2012

Leer un archivo XML desde java

Para leer un archivo XML en java podemos usar la librería JDOM.


Para leer el archivo se puede hacer de la siguiente manera:
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.jdom.Document;         // 
import org.jdom.Element;          // Librerías
import org.jdom.JDOMException;    // JDOM
import org.jdom.input.SAXBuilder; // 
...

public void cargarXml(){
//Se crea un SAXBuilder para poder parsear el archivo
SAXBuilder builder = new SAXBuilder();
File xmlFile = new File( "archivo.xml" );
try{

//Se crea el documento a traves del archivo
Document document = (Document) builder.build( xmlFile );

//Se obtiene la raiz 'tables'
Element rootNode = document.getRootElement();
//Se obtiene la lista de hijos de la raiz 'tables'
List list = rootNode.getChildren( "tabla" );
//Se recorre la lista de hijos de 'tables'
for ( int i = 0; i < list.size(); i++ ){
//Se obtiene el elemento 'tabla'
Element tabla = (Element) list.get(i);

//Se obtiene el atributo 'nombre' que esta en el tag 'tabla'
String nombreTabla = tabla.getAttributeValue("nombre");

System.out.println( "Tabla: " + nombreTabla );
//Se obtiene la lista de hijos del tag 'tabla'

List lista_campos = tabla.getChildren();
System.out.println( "\tNombre\t\tTipo\t\tValor" );

//Se recorre la lista de campos

for ( int j = 0; j < lista_campos.size(); j++ ){

//Se obtiene el elemento 'campo'
Element campo = (Element)lista_campos.get( j );
//Se obtienen los valores que estan entre los tags ''
//Se obtiene el valor que esta entre los tags ''
String nombre = campo.getChildTextTrim("nombre");
//Se obtiene el valor que esta entre los tags ''
String tipo = campo.getChildTextTrim("tipo");
//Se obtiene el valor que esta entre los tags ''
String valor = campo.getChildTextTrim("valor");
System.out.println( "\t"+nombre+"\t\t"+tipo+"\t\t"+valor);
}
}
}catch ( IOException io ) {
System.out.println( io.getMessage() );
}catch ( JDOMException jdomex ) {
System.out.println( jdomex.getMessage() );
}
}

martes, 11 de diciembre de 2012

Novedades java 7 Múltiples excepciones en un método

Siguiendo con las novedades de java 7, vamos a ver como tratar en un método la captura de varias excepciones.

Antes de java 7 el tratamiento se hacia añadiendo varios bloques catch, es decir de la siguiente manera:
public class Prueba1 {
  public static void main(String[] args){
    try {
      metodoExcepcion1();
      metodoExcepcion2();
    } catch (IOException e) {
      e.printStackTrace();
    } catch (NumberFormatException e) {
      e.printStackTrace();

   }
  }
  static void metodoExcepcion1() throws IOException{}
  static void metodoExcepcion2() throws NumberFormatException {}
}
Con la utilización del bloque multicatch el mismo código quedaría de la siguiente forma:
try {
   exceptionMethod1();
   exceptionMethod2();
} catch (IOException | NumberFormatException e) {
   e.printStackTrace();
}

domingo, 9 de diciembre de 2012

Novedades java 7 Swicht con String

Antes de java 7 no era posible la utilización de String para realizar un Switch. Con la nueva versión de java sí es posible. Os mostramos un ejemplo de como sería:
String letra= "A";

switch (choice){
  case "A":
    System.out.println("Elegido letra A");
    break;
  case "B":
    System.out.println("Elegido letra B");
    break;
  case "C":
    System.out.println("Elegido letra C");
    break;
}