StAX

Streaming API for XML (StAX) es una interfaz de programación de aplicaciones (API) para leer y escribir documentos XML, originaria de la comunidad del lenguaje de programación Java.

Tradicionalmente, las APIs XML son de uno de tos dos tipos:

Ambos tienen ventajas, el primero (por ejemplo, DOM) permite acceso aleatorio al documento, el segundo (por ejemplo, SAX) requiere una pequeña huella de memoria y es típicamente mucho más rápido.

Estos dos paradigmas de acceso pueden ser considerados como polos opuestos. Una API basada en un árbol permite acceso y manipulación ilimitados y aleatorios, mientras que una API basada en eventos es un pase de 'una sola vez' a través del documento de origen.

StAX fue diseñado como un término medio entre estos dos polos opuestos. En el paradigma StAX, el punto de entrada de programación es un cursor que representa un punto dentro del documento. La aplicación mueve el cursor hacia adelante ("tirando" de la información del analizador según necesita). Esto es diferente de una API basada en eventos, como SAX, que "empuja" los datos a la aplicación (requiriendo que la aplicación mantenga el estado entre los eventos puesto que es necesario para realizar un seguimiento de la ubicación dentro del documento).

Origen

StAX tiene sus raíces en una serie de APIs de tipo pull para XML incompatibles, más notablemente XMLPULL, los autores de la cual (Stefan Haustein y Aleksander Slominski) colaboraron con, entre otros, BEA Systems, Oracle, Sun y James Clark.

Ejemplos

De la especificación final de la JSR-173 V1.0 (utilizada bajo el uso justo).

Cita:

La siguiente API de Java muestra los principales métodos para leer XML en el enfoque del cursor.
public interface XMLStreamReader { 
  public int next() throws XMLStreamException; 
  public boolean hasNext() throws XMLStreamException; 
  public String getText(); 
  public String getLocalName(); 
  public String getNamespaceURI(); 
  // ...otros métodos no mostrados
}
La parte de escritura de la API tiene métodos que corresponden a la parte de lectura para tipos de eventos “StartElement” y “EndElement”.
public interface XMLStreamWriter { 
  public void writeStartElement(String localName) throws XMLStreamException;
  public void writeEndElement() throws XMLStreamException; 
  public void writeCharacters(String text) throws XMLStreamException; 
  // ...otros métodos no mostrados
}
5.3.1 XMLStreamReader
Este ejemplo ilustra cómo crear una instancia de una fábrica de entrada, crear un lector e iterar sobre los elementos de un documento XML.
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); 
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(...); 
while (xmlStreamReader.hasNext()) { 
    xmlStreamReader.next(); 
}

Véase también

Modos complementarios para procesar XML en Java:

Enlaces externos

Implementaciones Java
Utilidades y add-ons
Analizadores construidos sobre StAX
Analizadores no estándar similares a StAX
Analizadores XML de tipo pull no Java
Artículos y recursos
Download JSR specification document as a pdf here: download now