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

Primer CodeLab de Web Services con Mule ESB, JAX WS, SOAP, WSDL, Spring

Primer CodeLab de Web Services usando [ Mule ESB , JAX WS , SOAP , WSDL , Spring ]. en este post no hablaré nada teórico sobre Mule , ya que ello lo pueden encontrar Googleando, será un lab totalmente práctico. Requisitos: - JDK  1.6 - MuleStudio - soapUI Paso a Paso para crear Web Services con Mule : 1. Crear proyecto Mule ( MuleStudio ):  Next > Next > Next > Finish 2.- Crear el Objeto Producto.java package com.dmotta.mule.labuno.mulelabuno.bo; import java.io.Serializable; public class Producto implements Serializable { private String id; private String nombre; private String marca; private String descripcion; public Producto() { } public Producto(String id, String nombre, String marca, String descripcion) { this.id=id; this.nombre=nombre; this.marca=marca; this.descripcion=descripcion; } //getters/setters } 3.- Crear la Interface que publicará los métodos listarProductos() y getDetalleProdu...

RESTful Webservices con Java (Jersey / JAX-RS) - Tutorial Uno

REST con Java (JAX-RS) usando Jersey Este articulo explica como desarrollar RESTful web services en Java con JAX-RS implementacion de Jersey. En este ejemplo se usara SpringSource Tools Suite(Eclipse Helios), Java 1.6, SpringSource TC Server and JAX-RS 1.1. (Jersey 1.4). 1. REST - Representational State Transfer 1.1 Informacion General: En una Arquitectura REST tipicamente se tiene un REST server , el cual provee acceso a los Clientes REST  que acceden a consultar, modificar un Recurso REST . REST permite que los recursos sean presentados en diferentes tipos de datos, "text, html, xml, JSON" .  El Cliente REST  puede generar una peticion de un tipo de dato via el protocolo HTTP. 1.2. HTTP metodos Los metodos estandar HTTP usados en en REST son  PUT, GET, POST, DELETE. 1.3. RESTFul webservices Un RESTFul webservices es basados en metodos HTTP y en el concepto REST.  Por lo general se define URI base para los servicios, los MIME-types sus...