informacion[arroba]academiaandroid.com +34 958084455
Post Series: Tratamiento de XML con SAX y DOM

XML es uno de los formatos más utilizados para intercambiar información entre aplicaciones de diferentes plataformas. Son ficheros de texto donde los campos o elementos de información que contienen se delimitan mediante pares de etiquetas. Para parsear esos documentos, es decir, para poder leerlos y tratarlos, empleamos principalmente dos modelos: SAX y DOM.

En esta nueva serie de tutoriales vamos a ver estos dos modelos, haciendo hincapié en el tratamiento del DOM, a través del desarrollo de un proyecto.

Antes, en esta publicación, vamos a comenzar definiendo qué es XML, viendo algunas de sus características principales y describiendo un ejemplo práctico y algunos de los elementos que lo forman.

XML (Lenguaje de Etiquetado Extensible)

La idea de los lenguajes de etiquetado (o de marcas) que permitían almacenar documentos de información de forma estructurada surge con el Lenguaje de Etiquetado General (GML) desarrollado por IBM. Este fue origen del estandar SGML a partir del cual, la W3C desarrolló las especificaciones del XML (eXtensible Markup Language).

Gran parte de su éxito, radica en que es un estándar abierto que permite almacenar y organizar cualquier clase de información en un formato ajustado a las necesidades particulares de un entorno o contexto concreto (por ejemplo tratar específicamente libros de literatura general o documentación técnica o información logística -pedidos, facturas,…- o de cualquier otro ámbito de actividad). Está pensado como un sistema de intercambio de información completamente abstracto e independiente de cualquier plataforma y origen, pudiendo por ejemplo utilizarlo entre gestores de bases de datos distintos implementados en sistemas operativos diferentes.

Desde un punto de vista más técnico, se trata de un meta-lenguaje, es decir, un lenguaje que nos permite describir y definir otros lenguajes de marcado, que  sean adecuados a unos objetivos o usos determinados. Hablamos por tanto de una especificación, un conjunto de reglas, más que de un lenguaje concreto. Hay muchos ejemplos conocidos de lenguajes/formatos basados en XML, como XHTML, SVG, MathML, RSS ó RDF.

Los archivos de este tipo tendrán una extensión .xml y un tipo de MIME  “application/xml, text/xml” (MIME es el estándar para el intercambio de todo tipo de archivos a través de internet)

Entre sus características más destacadas, podemos citar algunas como:

  • Cuando hablamos de lenguaje de marcas extensible, nos referimos a que es posible modificar y actualizar continuamente la estructura de nodos del documento, añadiendo nuevas etiquetas, siempre y cuando se mantenga una jerarquía de etiquetas de apertura y cierre correcta.
  • Estructura fácilmente legible e interpretable, tanto por personas como programas ya que tiene una sintaxis simple y una estructura no ambigua.
  • Se puede analizar un documento XML utilizando un parser (analizador) estándar genérico, gracias a que lleva a asociado una definición de tipo de documento (DTD), que veremos más adelante, y que define su estructura y sintaxis.
  • Orientado al contenido y no a su forma de presentación.
  • Al tratarse de un lenguaje derivado de SGML, define además de la extensibilidad, las características de validación y estructuración (partes bien definidas).

Vamos a ver más en detalle la estructura de un documento XML bien formado. Para ello, emplearemos un ejemplo básico que mostramos a continuación, donde describimos las partes que lo forman. Es conveniente resaltar que todo componente de un documento es un objeto, y que a cada objeto del árbol se le denomina nodo:

Documento XML

Como se puede apreciar en la imagen anterior, el ejemplo estaría formado por:

(1) Un prólogo (opcional), en el que se especifica que se trata de un documento XML y del tipo de codificación utilizado (en este caso UTF-8 para representar un carácter Unicode o identificador único). Dentro de este prólogo se podrá establecer un DTD que describe los elementos, atributos, notaciones y entidades para utilizar en el documento, o un esquema XML, similar a un DTD, pero que permite asociar tipos de datos con elementos.

Ejemplo de DTD interno:

Ejemplo de creación de esquema XML:

Ejemplo de documento XML asignado al XML esquema:

(2) Elemento o nodo raíz (obligatorio), que formará el cuerpo del documento, y que englobará al resto de elementos hijos declarados. Dicho elemento será padre del resto de elementos, y sólo es posible establecer un elemento raíz por documento XML.

(3) Elementos hijos o nodos rama del elemento raíz, que a su vez estarán formados por nodos hijos (nodo final o también llamado hojas), donde se establecen las cadenas de texto. Para añadir un atributo al elemento declarado (información extra sobre el elemento donde se implemente), bastará con definirlo de la siguiente manera:

De forma breve, se comentarán algunas normas para crear un documento XML bien formado, y poder validar sintácticamente la construcción del documento:

  • Si utilizamos nombres compuestos, estos deberán ir juntos o separados por “_”.
  • No comenzar un elemento con un número (utilizar un carácter o “_”).
  • Al tratarse de un estándar sensible a las mayúsculas, la primera letra de cada elemento se deberá escribir en mayúscula.
  • No utilizar tildes o el carácter “ñ” para la construcción de etiquetas si se utiliza la codificación UTF-8 (para ese caso es preferible el uso de ISO-8859-1).

Desde un punto de vista más visual, en el siguiente diagrama (pincha para ampliar imagen) podemos apreciar la estructura de árbol de los nodos de un documento XML, dónde destaca principalmente la estructura jerárquica, en la que todos los nodos pertenecientes al nodo raíz son hijos de este:

Arbol XML

Hay numerosa documentación sobre XML en la Web, donde puedes ampliar información. Te hemos seleccionado algunos ejemplos:

En el siguiente tutorial, se describirán las principales interfaces y métodos que intervienen en la gestión de nodos de un documento XML.

This Post Has One Comment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Para evitar robots, por favor completa esta sencilla operación *