Articulo de referencia

StAX

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 ...

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):

  • 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.