La API de transmisión para 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 API XML son:
- Basado en DOM: todo el documento se lee en la memoria como una estructura de árbol para que la aplicación que lo llama pueda acceder a él de forma aleatoria.
- Basado en eventos: la aplicación se registra para recibir eventos a medida que se encuentran entidades dentro del documento fuente.
Ambos tienen ventajas: DOM , por ejemplo, permite el acceso aleatorio al documento, y los algoritmos basados en eventos como SAX consumen poca memoria y suelen ser mucho más rápidos.
Estas dos metáforas de acceso pueden considerarse polos opuestos. Una API basada en árboles permite un acceso y manipulación ilimitados y aleatorios, mientras que una API basada en eventos implica un único recorrido por el documento fuente.
StAX se diseñó como un punto intermedio entre estos dos extremos. En la metáfora de StAX, el punto de entrada programático es un cursor que representa una posición dentro del documento. La aplicación mueve el cursor hacia adelante, extrayendo la información del analizador sintáctico según la necesite. Esto difiere de una API basada en eventos, como SAX, que envía datos a la aplicación, lo que requiere que esta mantenga el estado entre eventos para rastrear la ubicación dentro del documento.
Orígenes
StAX tiene sus raíces en una serie de API de extracción incompatibles para XML, sobre todo XMLPULL , cuyos autores (Stefan Haustein y Aleksander Slominski) colaboraron, entre otros, con BEA Systems , Oracle , Sun y James Clark .
Ejemplos
De la especificación JSR-173 • Final, V1.0 (utilizada bajo uso legítimo).
Cita:
- La siguiente API de Java muestra los métodos principales para leer XML mediante el enfoque de 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 se corresponden con la parte de lectura para los 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 Lector de flujo XML
- Este ejemplo ilustra cómo instanciar 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
Métodos competitivos y complementarios para procesar XML en Java (el orden se basa aproximadamente en la fecha de introducción inicial):
- Modelo de objetos de documento (DOM) , el primer modelo de procesamiento XML basado en árboles, estandarizado e independiente del lenguaje/plataforma; entre los modelos de árbol de Java alternativos se incluyen JDOM , Dom4j y XOM.
- API simple para XML (SAX) , la API estándar para envío de XML
- La API de enlace XML de Java (JAXB) funciona sobre otro analizador (normalmente un analizador de flujo) y enlaza los datos contenidos en objetos Java con/desde ellos.
- XML en streaming
- API XQuery para Java
Enlaces externos
- Introducción a StAX XML.com, Harold, Elliotte Rusty
- API de Java Streaming para XML (Stax) - Tutorial
- Artículo sobre los patrones de diseño XMLPull (y StAX) de Aleksander Slominski.
- Analizador StAX - API de cursor e iterador Artículo sobre las API de cursor e iterador por HowToDoInJava.
- Java (plataforma de software)
- Interfaces de programación de aplicaciones
- analizadores XML