Manejo de XML

Una de las cosas que los programadores en java usan mas es la configuracion por archivos XML o Properties, los properties se pueden leer facilmente usando java.util.Properties, pero los XML requieren un poco mas de trabajo.

Aqui coloco lo que utilizo yo cuando tengo que manipular archivos XML

primero hay que diferenciar 2 cosas una es leer un XML y la 2da es ubicar elementos en un XML

El leer un archivo XML se puede realizar utilizando SAX (Simple API XML). El cual se realiza creando una clase que extienda de org.xml.sax.helpers.DefaultHandler, la idea es sobreescribir ciertos metodos como startElement, endElement los cuales tienen como parametro String namespaceURI, String localName y String qName, Attributes attr.

El utilizar esto significa leer todo el archivo XML y mucha de las veses solo queremos localizar ciertos tags ya que es mas rapido que leer todo el documento.
para hacerlo no hay que utilizar un handler, solo objetos.

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.traversal.NodeIterator;
impor java.io.*;

....
File file = new File("myfile.xml");
FileInputStream fis = null;
try{
fis = new FileInputStream(file);
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(fis);
Sring exp = "/"; // expresion en formato xpath
/*
La expresion en formato xpath es muy importante, ya que con ella se va a realizar la busqueda en nuestro archivo xml.
Si no saben, les recomiendo buscar un tutorial sobre las expresiones xpath ya que es la base de la obtencion de la informacion
en nuestro archivo xml.
*/

/*Dependiendo de lo que se este buscando se puede tener una lista de nodos*/
NodeIterator nodeIt = XPathAPI.selectNodeIterator(document, exp);

/*o simplemente un nodo en especifico*/
Node node = XPathAPI.selectSingleNode(document, exp);
Node childNode = node.getChild();
String text = node.getTextContent(); //es el texto dentro de los tags texto
String nodeName = node.getNodeName(); //nombre del nodo nodeName va a ser igual a tag
NamedNodeMap nnm = node.getAttributes(); // los atributos del nodo, dentro del map estara un atributo llamada name

}catch(Exception ex){
ex.printStackTrace();
}finally{
if(fis != null){
try{
fis.close();
}catch(Exception ex){}
}
}

Gabriel Gutierrez

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Hola

Hola Gabriel, oye una pregunta tengo una aplicacion de escritorio(swing), en donde tengo una clase de constantes y ahi tengo los valores para conectarme a la Base de Datos, quiero cambiar esta forma de trabajar usando un archivo XML o un properties, cual me recomiendas tu y por que? Gracias de antemano.

Imagen de ezamudio

Spring

Has intentado con Spring? Puedes definir no solamente un DataSource sino todo tipo de componentes que necesite tu aplicación (DAOs, servicios, etc). Incluso ventanas de Swing y cosas así. Con eso podrías definir un DataSource en el application context de Spring; en tu app solamente debes crear el application context pasando la ruta al XML.

Imagen de nvdavilam

Ayudaaaa tengo problemas me

Ayudaaaa tengo problemas me mandaron un proyecto de ACBM(Añadir,Consultar,Borrar,Modificar) con Java y XML y soy nuevo en eso :'(