Saltar la navegación

6.3.- "Parser" o analizador XML.

Introducción

Cuando se quieren almacenar datos que deban ser leídas por aplicaciones ejecutadas en múltiples plataformas será necesario recurrir a formatos más estandarizados, como los lenguajes de marcas.

Los documentos XML consiguen estructurar la información intercalando una serie de marcas denominadas etiquetas. En XML , las marcas o etiquetas tienen cierta similitud con un contenedor de información. Así, una etiqueta puede contener otras etiquetas o información textual. De este modo, conseguiremos subdividir la información estructurando de forma que pueda ser fácilmente interpretada.

Como toda la información es textual, no existe el problema de representar los datos de diferente manera. Cualquier dato, ya sea numérica o booleana, habrá transcribirla en modo texto, de modo que cualquiera que sea el sistema de representación de datos será posible leer e interpretar correctamente la información contenida en un archivo XML .

Es cierto que los caracteres se pueden escribir usando también diferentes sistemas de codificación, pero XML ofrece diversas técnicas para evitar que esto sea un problema. Por ejemplo, es posible incluir en la cabecera del archivo que codificación se ha utilizado durante el almacenamiento, o también se pueden escribir los caracteres de código ASCII superior a 127, utilizando entities de carácter , una forma universal de codificar cualquier símbolo .

XML consigue estructurar cualquier tipo de información jerárquica. Se puede establecer cierta similitud con la forma como la información se almacena en los objetos de una aplicación y la forma como se almacenaría en un documento XML . La información, en las aplicaciones orientadas a objeto, estructura, agrupa y jerarquiza en clases, y en los documentos XML se estructura, organiza y jerarquiza en etiquetas contenidas unas dentro de otras y atributos de las etiquetas 

Analizador XML

Dado que XML es un lenguaje utilizado ámpliamente en el desarrollo de la World Wide Web, existen ya herramientas y estándares de programación para leer documentos XML. Las herramientas o programas que leen el lenguaje XML y comprueban si el documento es válido sintácticamente, se denominan analizadores o "parsers". 

Un parser XML es un módulo, biblioteca o programa que se ocupa de analizar, clasificar y transformar un archivo de XML en una representación interna,  extrayendo la información contenida en cada una de las etiquetas y relacionándola de acuerdo con su posición en la jerarquía.

 En el caso de XML, como el formato siempre es el mismo, no necesitamos crear un parser cada vez que hacemos un programa, sino que existen un gran número de parsers o analizadores sintácticos disponibles que pueden averiguar si un documento XML cumple con una determinada gramática. Estos analizadores o parsers pueden ser secuenciales como SAX o STAX o jerarquicos como DOM.

Analizadores secuenciales

Los analizadores secuenciales, que permiten extraer el contenido a medida que se van descubriendo las etiquetas de apertura y cierre, se denominan analizadores sintácticos. Son analizadores muy rápidos, pero presentan el problema de que cada vez que se necesita acceder a una parte del contenido necesario releer todo el documento de arriba a abajo.

En Java hay dos analizadores secuenciales: SAX, que es el acrónimo de Simple API for XML . Es una analizador muy usado en varias bibliotecas de tratamiento de datos XML , pero no suele usarse en aplicaciones finales y STAX, Streaming API for XML, posterior a SAX y que lo ha superado.

Analizadores jerárquicos

Generalmente, las aplicaciones finales que necesitan trabajar con datos XML suelen usar analizadores jerárquicos, porque además de realizar un análisis secuencial que les permite clasificar el contenido, se almacenan en la memoria RAM siguiendo la estructura jerárquica detectada en el documento. Esto facilita mucho las consultas que haya que repetir varias veces, dado que las estructuras jerárquicas de la memoria RAM tienen un rendimiento de acceso parcial a los datos muy eficiente.

Los analizadores jerárquicos guardan todos los datos del XML en memoria dentro de una estructura jerárquica. Son ideales para aplicaciones que requieran una consulta continua de los datos. El formato de la estructura donde se almacena la información en la memoria RAM ha sido especificado por el organismo internacional W3C (World Wide Web Consortium) y se suele conocer como DOM (Document Object Model). Es una estructura que HTML y  javascript han popularizado mucho y se trata de una especificación que Java materializa en forma de interfaces. La principal se denomina Documento y representa todo un documento XML . Al tratarse de una interfaz, puede ser implementada por varias clases.

Comparativa analizadores

CARACTERÍSTICA STAX SAX DOM TRAX
Tipo de API Pull, streaming Push, streaming En memoria Regla XSLT
Facilidad de uso Alta Media Alta Media
Capacidad XPath No No Si Si
Eficiencia de CPU y memoria Buena Buena Varia Varia
Solo hacia adelante Si Si No No
Lee XML Si Si Si Si
Escribe XML Si No Si Si
Crear, Leer, Modificar, Borrar No No Si No