Saltar la navegación

6.5.- SAX.

SAX (API Simple para XML), es una interfaz simple de aplicaciones XML, fácil e intuitiva. El parser trabaja de la siguiente forma:

  1. Lee un fichero XML de forma secuencial, produciendo eventos de manera secuencial en función de los resultados de lectura.
  2. Cada evento invoca a un método que ha sido realizado por el programador procesando el documento poco a poco y no consumiendo prácticamente memoria, aunque por otra parte impide tener visión general de todo el documento XML.

Permite analizar el documento  XML de forma secuencial, es decir, va cargando en memoria diferentes partes del mismo, cosa contraria a lo que hace DOM que carga todo el documento de golpe en memoria.

Es conveniente utilizar SAX:

  • Cuando el documento XML  es considerablemente grande.
  • Cuando no se requiere una modificación estructural.
  • Si se quiere parsear diferentes partes del documento.

La lectura de un documento XML produce eventos los cuales invocan a métodos, los eventos son: inicio y fin de un archivo XML(startDocument() y endDocument()), inicio y fin de un elemento  (startElement() y endElement()) y la información que llevan las diferentes etiquetas (characters()).

SAX genera un objeto procesador de XML llamado XMLReader, para después decir que objetos tienen métodos para transferir los eventos. Estos objetos implementan los siguientes interfaces:

  • ContentHandler, el cual recibe las notificaciones de los eventos del fichero XML.
  • DTDHandler, que recoge los eventos del DTD del fichero.
  • ErrorHandler, crea el tratamiento de errores.
  • EntityResolver, se utilizan siempre que se referencia a otra entidad.
  • DefaultHandler, la cual implementa por defecto los métodos, siendo el programador quien los defina. Con esta clase se podrá crear el parser XML. Se compone de los siguientes eventos básicos:
    • startDocument: se llama cuando se detecta que el documento empieza. Aquí deben indicarse las acciones a realizar al inicio del documento.
    • endDocument: se llama cuando se detecta que el documento ha acabado. Por lo tanto, aquí deben indicarse las acciones a realizar al finalizar el documento.
    • startElement: Se llama cuando encuentra un nuevo elemento, nodo, etiqueta, tag, etc. Aquí debe indicarse el tratamiento que se deberá realizar sobre cada nuevo elemento, como la recogida de información de sus atributos.
    • endElement: Se llama una vez ha leído el elemento. Aquí se encuentra la información del nodo y del contenido del nodo por lo que es aquí donde, normalmente, se recoge la información.
    • Characters: se invoca para encontrar una cadena de texto.

Pregunta Verdadero-Falso

Pregunta 1

El SAX lee todo el fichero .xml y lo muestra