Skip to content

8 Introducción a los ficheros XML

Introducción

XML (eXtensible Markup Language) es un metalenguaje, es decir, un lenguaje para la definición de lenguajes de marcado. Este tipo de fichero permite jerarquizar y estructurar la información y describir los contenidos dentro del propio documento.

Los ficheros XML son ficheros de texto escritos en este lenguaje, donde la información está organizada de forma secuencial y en orden jerárquico.

Existen unas marcas especiales que sirven para delimitar las marcas que dan estructuran al documento (< y >). Cada marca tiene un nombre y puede contener varios atributos.

<?xml version="1.0"?>
<Empleados>
 <empleado>
     <iD>1</iD>
        <apellido>FERNANDEZ</apellido>
        <departamento>10</departamento>
        <salario>1000.45</salario>
    </empleado>
    <empleado>
     <iD>2</iD>
        <apellido>GIL</apellido>
        <departamento>20</departamento>
        <salario>2400.6</salario>
    </empleado>
    <empleado>
     <iD>3</iD>
        <apellido>LOPEZ</apellido>
        <departamento>10</departamento>
        <salario>3000.0</salario>
    </empleado>
</Empleados>

Árbol del documento

Una forma de trabajar con XML es considerando un documento XML como un árbol de nodos. En Informática, un árbol es una estructura de datos que equivale a un árbol matemático. En Matemáticas un árbol es un caso particular de grafo. Los siguientes términos definidos en teoría de grafos se utilizan también en Informática y en XPath:

  • Un grafo es un conjunto de objetos llamados nodos o vértices unidos por enlaces llamados arcos o aristas.

Figura 1 - Grafos

Figura 1 - Grafos

  • Un grafo dirigido es un grafo en el que los arcos tienen dirección.

Figura 2 - Grafo dirigido

Figura 2 - Grafo dirigido

  • Cuando dos nodos están unidos por un arco con dirección, el nodo padre es el nodo del que parte el arco y el nodo hijo es el nodo al que llega el arco.

Figura 3 - Nodos

Figura 3 - Nodos

  • Un árbol es un grafo en el que cualquier pareja de vértices están conectada por un único camino (es decir, que no hay ciclos). Un árbol dirigido es un árbol en el que las aristas tienen dirección y todos los nodos menos uno tienen un único padre.

Figura 4 - Árbol

Figura 4 - Árbol

  • Los **nodos descendiente**s de un nodo son todos los nodos a los que se llega desde el nodo: los hijos, los hijos de los hijos, etc.

Figura 5 - Nodos descendientes

Figura 5 - Nodos descendientes

  • Los nodos ascendientes de un nodo son todos los nodos de los que un nodo es descendiente: el padre, el padre del padre, etc.

Figura 6 - Nodos ascendientes

Figura 6 - Nodos ascendientes

Tipos de nodos

Un documento XML puede representarse como un árbol dirigido, considerando por ejemplo los elementos como nodos y que un elemento es padre de los elementos que contiene. Pero en XPath no sólo los elementos son nodos, en realidad hay siete tipos de nodos:

  • Raíz
  • Elemento
  • Atributo
  • Texto
  • Comentario
  • Instrucción de procesamiento
  • Espacio de nombres

Por ejemplo, el documento XML siguiente y su representación:

<?xml version="1.0" encoding="UTF-8"?>
<biblioteca>
  <libro>
    <titulo>La vida está en otra parte</titulo>
    <autor>Milan Kundera</autor>
    <fechaPublicacion año="1973"/>
  </libro>
  <libro>
    <titulo>Pantaleón y las visitadoras</titulo>
    <autor fechaNacimiento="28/03/1936">Mario Vargas Llosa</autor>
    <fechaPublicacion año="1973"/>
  </libro>
  <libro>
    <titulo>Conversación en la catedral</titulo>
    <autor fechaNacimiento="28/03/1936">Mario Vargas Llosa</autor>
    <fechaPublicacion año="1969"/>
  </libro>
</biblioteca>

Figura 7 - Representación XML
Figura 7 - Representación XML

Warning

La declaración DOCTYPE no se considera como nodo.

Los nodos atributos y de texto no son como los nodos elemento. Por ejemplo, los nodos atributo y de texto no pueden tener descendientes. En realidad el nodo atributo ni siquiera se considera como hijo, sino como una etiqueta adosada al elemento. El texto contenido por una etiqueta sí que se considera hijo del elemento, aunque las expresiones XPath suelen trabajar con nodos elemento y para referirse a los atributos o al texto se utilizan notaciones especiales.

Acceso a ficheros XML

Los ficheros XML se pueden utilizar para proporcionar datos a una base de datos o para almacenar copias de partes del contenido de una base de datos. También se utilizan para escribir ficheros de configuración de programas o en el protocolo SOAP (Simple Object Access Protocol) para ejecutar comandos en servidores remotos.

Para leer los ficheros XML y acceder a su contenido y estructura se utiliza un procesador de XML o parse. El procesador lee los documentos y proporciona un acceso a su contenido y estructura. Alguno de los procesadores más usados son:

  • DOM (Modelo de Objetos de Documento). Almacena toda la estructura del documento en memoria en forma del árbol con nodos padre, nodos hijos y nodos finales (no tienen descendientes). Este tipo de procesamiento necesita más recursos de memoria y tiempo sobre todo si los ficheros XML a procesar son bastante grandes y complejos.
  • SAX (API Simple para XML). Lee un fichero en forma secuencial y produce una secuencia de eventos (comienzo/fin del documento, de la etiqueta, etc) en función de los resultados de la lectura. Este tipo de procesamiento prácticamente no consume memoria, pero por otra parte, impide tener una visión global del documento por el que navegar.