Streaming API for XML ( StAX ) es una interfaz de programación de aplicaciones ( API ) para leer y escribir documentos XML , que se origina en la comunidad de lenguajes 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 el acceso aleatorio de la aplicación que realiza la llamada.
- basado en eventos: la aplicación se registra para recibir eventos a medida que se encuentran entidades dentro del documento de origen.
Ambos tienen ventajas: DOM , por ejemplo, permite el acceso aleatorio al documento, y el algoritmo impulsado por eventos como SAX tiene una pequeña huella de memoria y suele ser mucho más rápido.
Estas dos metáforas de acceso pueden considerarse polos opuestos. Una API basada en árbol permite el acceso y la manipulación ilimitados y aleatorios, mientras que una API basada en eventos es una pasada "única" a través del documento de origen.
StAX fue diseñado como una mediana entre estos dos opuestos. En la metáfora 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 'empuja' 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.
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
De la especificación JSR-173 • Final, V1.0 (usado bajo uso legítimo).
Cita:
- La siguiente API de Java muestra los métodos principales para leer XML en el enfoque del cursor.
interfaz pública XMLStreamReader { public int next () lanza XMLStreamException ; public boolean hasNext () lanza XMLStreamException ; public String getText (); public String getLocalName (); public String getNamespaceURI (); // ... otros métodos no mostrados }
- El lado de escritura de la API tiene métodos que corresponden al lado de lectura para los tipos de eventos "StartElement" y "EndElement".
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 mostrados }
- 5.3.1 XMLStreamReader
- Este ejemplo ilustra cómo crear una instancia de una factoría 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 . siguiente (); }
Ver también
Formas competitivas y complementarias de procesar XML en Java (el orden se basa libremente en la fecha inicial de introducción):
- Document Object Model (DOM) , el primer modelo de procesamiento XML estandarizado, independiente del lenguaje / plataforma, basado en árboles; Los modelos alternativos de árbol de Java incluyen JDOM , Dom4j y XOM
- API simple para XML (SAX) , la API push de XML estándar
- Java XML Binding API (JAXB) , funciona sobre otro analizador (normalmente analizador de transmisión), enlaza datos contenidos a / desde objetos Java.
- Transmisión de XML
- API de XQuery para Java
enlaces externos
- Introducción a StAX XML.com, Harold, Elliotte Rusty
- API de transmisión de Java para XML (Stax) - Tutorial
- XMLPull Patterns Artículo sobre patrones de diseño XML Pull (y StAX) por Aleksander Slominski.
- StAX Parser - Cursor & Iterator APIs Artículo sobre Cursor & Iterator API de HowToDoInJava.