JDom

RECU-0228 (Recurso Ficha Técnica)

Descripción

JDom es un API para leer, crear y manipular documentos XML de una manera sencilla y muy intuitiva para cualquier programador en Java, en contra de otras APIs tales como DOM y SAX, que fueron ideadas sin pensar en ningún lenguaje en concreto, de ahí que resulte un poco incómoda su utilización.

La API JDom no es un parser, en realidad, usa un parser para su trabajo. JDOM "sólo" nos aporta una capa de abstracción en el tratamiento de documentos XML, facilitándonos bastante la tarea de interpretrar DOM y SAX para poder trabajar con XML desde Java

El API está formado por 6 paquetes. A continuación comentamos cada uno de los paquetes del API:

  • El paquete org.jdom: destacamos las clases Document que representará el documentoXML, Element que representará el elemento o etiqueta que forma el documento, y la clase Attribute que representa los atributos que puedan tener los elementos.
  • El paquete org.jdom.adapters: alberga todas las clases Adapter (ver patrón de diseño Adapter) ya que no todos los parsers DOM tienen la misma API.
  • El paquete org.jdom.input: alberga las clases Builder para construir los documentosXML.
  • El paquete org.jdom.output: alberga las clases que se utilizan para dar salida a la clase Document.
  • El paquete org.jdom.transform: alberga las clases que permiten transformar el XML.
  • El paquete org.jdom.Xpath: da soporte a Xpath desde JDom.

Uso y recomendaciones conocidas

  • La librería ROME de Sun Micro Systems genera el XML empleando a JDOM
  • Entidades públicas (Banco Central de Ecuador)
  • Framework AMAP del Consejo de Cantabria

Ventajas e inconvenientes

Ventajas de JDOM:

  • Pensada especialmente para Java y, por tanto, mejor integrada en este lenguaje.
  • Facilidad de uso (para programadores que conozcan Java)
  • Representación de documentos como árboles, lo que posibilita el acceso directo a cualquier parte del documento (ventaja sobre SAX)

Desventajas de JDOM:

  • Mayor consumo de memoria que SAX (puesto que se debe procesar y mantener en memoria el árbol del documento XML o una porción del mismo).
  • Carece del concepto de Nodo, lo que dificulta, en cierta medida, la navegación a través del árbol del documento. Por ejemplo, al obtener los hijos de un elemento, el resultado es una lista (java.util.List) de objetos genéricos, y debemos comprobar qué representan esos objetos (por ejemplo usando instanceof) para saber si son elementos, atributos, etc.

Contenidos relacionados

Pautas
Área: Desarrollo » Librerías y Módulos » Java
Código Título Tipo Carácter
LIBP-0348 Librerías para el tratamiento de XML en Java Libro de pautas Directriz Recomendada