Ir al contenido principal

XML en Java – APIs y Parsers

El uso de XML es primordial al momento de desarrollar software, sobre todo empresarial, y Java por supuesto cuenta con APIs y Parsers que facilitan el trabajo con este tipo de documentos. A través de este pequeño artículo aprenderemos qué APIs y Parsers existen, y cual debemos escoger al momentode desarrollar una aplicación. En futuros artículos pondré algunos ejemplos. Pero, primero lo primero:

¿Qué es XML?

XML significa Extensible Markup Language, es un metalenguaje extensible de etiquetasdesarrollado por el W3C. XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades. Y por tanto tiene algunas ventajas:

  • Es extensible (una vez que un xml fue diseñado y puesto en producción, es posible extenderlo con la adición de nuevas etiquetas de modo que los antiguos consumidores puedan continuar utilizando el servicio sin complicación alguna).
  • El analizador es un componente estándar, no es necesario crear un analizador específico para cada lenguaje. Esto posibilita el empleo de uno de los tantos disponibles. De esta manera se evitan bugs y se acelera el desarrollo de la aplicación.
  • Si un tercero decide usar un documento creado en XML, es sencillo entender su estructura y procesarlo. Mejora la compatibilidad entre aplicaciones.

¿Qué es un XML Parser?

Al momento de desarollar una aplicación que necesite leer archivos XML, no es conveniente crear piezas de código que hagan éste tipo de tareas desde cero. Un parser XML es una librería de clases que ofrece al programador métodos para manipular documentos XML, además de abstraer el funcionamiento complejo o no particular de XML, incluyendo:

  • Resuleve referencias
  • Entiende las secciones CDATA
  • Verificar si el documento está bien formado
  • Validar el documento contra su DTD
  • Asignar tipos y atributos

Los Parsers XML generalmente pueden usar una o más APIs XML para llevar a cabo su misión. Pero... ¿qué son las APIs XML?

APIs XML en Java

Escoger un API XML es quizás una de las más importantes decisiones que debes tomar, de acuerdo al proyecto que se está desarrollando. Muchos Parsers tienen la capacidad de usar una u otra, por lo que es relativamente sencillo cambiar de parser si es necesario; por otro lado, cambiar de API puede llegar a ser bastante doloroso, incluso podrías tener que reescribir todo. Así que, se cuidadoso al momento de escoger alguno. He aquí una lista de los más importantes:

  • SAX: Simple API for XML, es de lejos la mejor API para XML. Es muy poco lo que no puedes hacer con dicha API. Las clases e interfaces de SAX modelan el parser, el flujo desde el cual losdocumentos son leídos, y la aplicación cliente recibe datos desde el parser. Sin embargo, ninguna clase modela el documento XML; en vez de ello, el parser provee el contenido a la aplicación cliente a través de una interfaz callback. Esto hace a SAX muy rápido y eficiente, puesto que no tiene que guardar el documento entero en la memoria. Esto hace que sea, por eficiencia, la única opción si deseas manipular documentos XML demasiado grandes.
  • DOM: Document Object Model, es un API que modela un documento XML como un árbol. A diferencia de SAX, DOM puede leer y generar documentos XML. Cada documento XML es representado por un objeto Document. Toda operación (escribir ,leer, modificar, etc.) sobre dichos objetos se realiza a través de la invocación de métodos.
  • JAXP: Java API for XML Processing, es el API estándar de Java que envuelve tanto a SAX como a DOM. Por tanto, al momento de iniciar un proyecto, no te preguntas si usar SAX o JAXP, o DOM o JAXP. SAX y DOM son parte de JAXP.
  • Otras APIs para XML en Java son: JDOM, dom4j, XMLPull.

XML parsers para Java

Aquí un pequeño listado de los parsers más usados:

  • XERCES: es parte de Apache XML Project, y es bastante completo. Además, soporta completamente a SAX, DOM y JAXP. Se distribuye bajo la licencia Apache 2.0, por lo cual tienes bastantes libertades al momento de usarlo.
  • Crimson: actualmente Crimson posee casi todas las características de xerces (soporta SAX, DOM, XML 1.0 y JAXP), y también forma parte del proyecto Apache XML. Fue desarrollado por ingenieros de Sun que no estaban de acuerdo en cómo XERCES parseaba los documentos XML; y aunque en un principio huvo un inmenso afán entre los dos grupos de desarrolladores por hacer más rápido y eficiente su proyecto, actualmente son casi igual de rápidos y confiables. Aunque éste no es muy usado, hay que decirlo.

Comentarios

Entradas populares de este blog

Java POI HSSFCell : añadir comentario en una celda

POI HSSFComment: Una manera simple de añadir un comentario en una celda de excel usando el metodo cell.setCellComment(). public class ExcelTools { public static void main(String[] args){ //escribirExcel(); //leerExcel(); validarValoresDuplicadosLista(); System.out.println("Ejemplo Finalizado."); } public static void escribirExcel(){ try{ //Se crea el libro Excel HSSFWorkbook wb = new HSSFWorkbook(); //Se crea una nueva hoja dentro del libro HSSFSheet sheet = wb.createSheet("HojaEjemplo"); //Se crea una fila dentro de la hoja HSSFRow row = sheet.createRow((short)0); HSSFPatriarch patr = sheet.createDrawingPatriarch(); //Creamos celdas de varios tipos row.createCell((short)0).setCellValue(1); row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue("ejemplo&

Debugging Remoto con Eclipse + WebSphere 7 + Maven

Tienes proyectos java en Maven y no puedes ubicar bugs fácilmente a falta de junit. Sin embargo, existe la alternativa de debugear la aplicación web a través de Java Debugger (jdb). Aquí les muestro una guía de como hacer un debug remoto de la aplicación web en Eclipse y WebSphere 7 a través de Java Debugger (JDB). Eclipse <----> Java Debugger (jdb) <----> WebSphere 7 1. Habilitar el WebSphere en modo Debug. Para esto seguir los siguientes pasos:  1. Servers –> Server Types –> WebSphere application servers 2. Under Server Infrastructure section –> expandir Java and Process Management –> Process definition 3. dentro de la seccion Additional Properties –> click Java Virtual Machine 4. clic en el check “Debug Mode” 5. En texbox Debug arguments, poner este valor:  -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888 6. Reiniciar el servidor WebSphere. Ahora, WebSphere se inicia en modo debug, y escuchando en el pu

DB2 Error SQL20054N

Ejecutando un alter table me da el  siguiente error: db2 "ALTER TABLE PRG_REC.ESTIMADO_OBJETIVO DROP COLUMN VTA_OBJ_CAMP_FALTA_EXTRANJERA"; Error:  [db2inst1@ibmdb2test]:/home/db2inst1/1223/REQ1223/rollback$ db2 "ALTER TABLE PRG_REC.ESTIMADO_OBJETIVO DROP COLUMN VTA_OBJ_CAMP_FALTA_EXTRANJERA"; DB21034E  The command was processed as an SQL statement because it was not a valid Command Line Processor command.  During SQL processing it returned: SQL20054N  The table "PRG_REC.ESTIMADO_OBJETIVO" is in an invalid state for the operation.  Reason code="23" .  SQLSTATE=55019 Segun IBM la descripcion del error: SQL20054N:  La tabla   nombre-tabla   está en un estado no válido para la operación. Código de razón= código-razón . 23 Se ha realizado el número máximo de modificaciones recomendadas de REORG. Se permite un máximo de tres modificaciones recomendadas de REORG en una tabla antes de que se deba realizar reorg, para actualizar las fila