Para procesar (parse) la información contenida en documentos XML se dispone de diversas técnicas, cada una de las cuales tiene sus propias características. Las dos técnicas (modelos) fundamentales que existen para el procesamiento de documentos XML de manera independiente al lenguaje de programación son las siguientes:

  • DOM (Document Object Model)
    • Es un estándar diseñado por W3C (Consorcio World Wide Web)
    • Basado en la estructura de árbol de XML
    • Almacena todo el árbol en memoria (no recomendado para grandes documentos)
    • Acceso directo a cualquier parte del documento
  • SAX (Simple API for XML)
    • Con licencia de dominio público, se ha convertido en un estándar "de hecho". Inicialmente diseñado para Java, pero se ha extendido a varios lenguajes.
    • Se basa en un funcionamiento basado en flujo (stream), de manera que se va procesando según se recibe su contenido. No es necesario cargar todo el documento en memoria para procesarlo.
    • Su programación está basada en el tratamiento de eventos. La información es empujada (pushing) hacia la aplicación al lanzarse un evento cuando se detecta un determinado tipo de información.
    • No permite el acceso directo a una determinada parte del documento.
    • No permite la modificación de su contenido.
  • StAX (Streaming API for XML)
    • Diseñado como una técnica intermedia entre las dos anteriores.
    • La aplicación avanza un cursor trayendo (pulling) la información según se va necesitando, sin posibilidad de hacer acceso directo.
    • Permite la escritura de datos en el documento.

Comparativa de técnicas de procesadores (parsers) de documentos XML

DOM SAX StAX
Tipo de API Árbol en memoria
Flujo por eventos
(Streaming, push
Flujo por extracción
(Streaming, pull
Facilidad de uso Alta Media Alta
Capacidad XPath No No
Eficiencia de memoria y CPU Varía Buena Buena
Acceso directo No No
Lectura XML
Escritura XML No
Crear, leer, actualizar, borrar No No

Además de estas técnicas para el procesamiento de los datos contenidos en documentos XML existen otras técnicas para su tratamiento como las siguientes:

  • XPATH: Es un lenguaje que permite realizar consultas mediante expresiones que recorren y procesan un documento XML.
  • XSLT: (XML Style Sheet Language Transformations) Estándar definido por W3C. Presenta una forma de transformar documentos XML en otros e incluso a formatos que no son XML.

La API que incorpora Java de manera predeterminada para manipular documentos XML se denomina JAXP (Java API for XML Processing), que permite utilizar todas esas técnicas mencionadas anteriormente. Dispone de diversas clases agrupadas en los siguientes paquetes:

  • javax.xml.parsers: Proporciona un interfaz común para los diferentes procesadores SAX y DOM.
  • org.w3c.dom: Define las clases de los componentes del modelo DOM.
  • org.xml.sax: Define la API básica de SAX.
  • javax.xml.transform: Define la API de XSLT para transformar los documentos XML en otros formatos.
  • javax.xml.stream: Proporciona la API para StAX.
  • javax.xml.xpath: Proporciona la API para XPath.

Además de estas APIs incorporadas en Java puedes encontrar otras creadas por terceros con sus propias características. Algunas de ellas son, por ejemplo:

  • DOM4J: dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.
  • JDOM: provide a complete, Java-based solution for accessing, manipulating, and outputting XML data from Java code.
  • XOM: XOM™ is a new XML object model. It is an open source (LGPL), tree-based API for processing XML with Java that strives for correctness, simplicity, and performance, in that order.
  • XStream: XStream is a simple library to serialize objects to XML and back again.