Streaming API for XML ( StAX ) es una interfaz de programación de aplicaciones ( API ) para leer y escribir documentos XML , originada en la comunidad del lenguaje de programación Java .
Tradicionalmente, las API XML son:
Ambos tienen ventajas: DOM , por ejemplo, permite acceso aleatorio al documento, y un algoritmo controlado por eventos como SAX ocupa poco espacio en la memoria y suele ser mucho más rápido.
Estas dos metáforas de acceso pueden considerarse como polos opuestos. Una API basada en árboles permite un acceso y una manipulación ilimitados y aleatorios, mientras que una API basada en eventos es un paso "de una sola pasada" por el documento fuente.
StAX fue diseñado como un punto intermedio entre estos dos opuestos. En la metáfora de StAX, el punto de entrada programático es un cursor que representa un punto dentro del documento. La aplicación mueve el cursor hacia adelante, "extrayendo" la información del analizador según sea necesario. Esto es diferente de una API basada en eventos, como SAX, que "envía" datos a la aplicación, lo que requiere que la aplicación mantenga el estado entre eventos según sea necesario para realizar un seguimiento de la ubicación dentro del documento.
StAX tiene sus raíces en una serie de API de extracción incompatibles para XML, la más notable de las cuales es XMLPULL, cuyos autores (Stefan Haustein y Aleksander Slominski) colaboraron con, entre otros, BEA Systems , Oracle , Sun y James Clark .
De la especificación JSR-173 • Final, V1.0 (utilizada bajo uso legítimo).
Cita:
interfaz pública XMLStreamReader { int público next () lanza XMLStreamException ; booleano público hasNext () lanza XMLStreamException ; String público getText (); String público getLocalName (); String público getNamespaceURI (); // ... otros métodos no se muestran }
interfaz pública XMLStreamWriter { public void writeStartElement ( String localName ) lanza XMLStreamException ; public void writeEndElement () lanza XMLStreamException ; public void writeCharacters ( String text ) lanza XMLStreamException ; // ... otros métodos no se muestran }
XMLInputFactory xmlInputFactory = XMLInputFactory . newInstance (); XMLStreamReader xmlStreamReader = xmlInputFactory . createXMLStreamReader (...); mientras ( xmlStreamReader . hasNext ()) { xmlStreamReader . next (); }
Formas competitivas y complementarias de procesar XML en Java (el orden se basa vagamente en la fecha inicial de introducción):