Java Web Services Developer StAX Ing. Lennon Shimokawa Miyashiro http://lshimokawa.net lshimokawa@gmail.com
StAX Streaming API for XML Event based Pull parsing Para leer y escribir documentos XML Alternativas a SAX, DOM Más simple que SAX, más eficiente que DOM JSR-173
Streaming vs DOM 2 modelos para trabajar XML: streaming y DOM DOM Crea objetos en memoria que representan el árbol XML entero En memoria puede navegarse libremente Flexibilidad pero alto consumo de memoria y procesador
Streaming vs DOM Streaming Parseo serial y en runtime Los contenidos no son conocidos de antemano Menor consumo de memoria y procesador, solo vez una parte del documento XML Para aplicaciones con limitaciones de memoria (móviles) o áltamente concurrentes (app servers)
Pull parsing vs push parsing Tipos de streaming: pull y push Pull: el cliente lláma a métodos del API para solicitar la data XML (pull), de forma explícita Push: el XML parser manda la data XML (push) al cliente
Pull parsing vs push parsing Ventajas de pull parsing Con pull el cliente controla el thread, con push el parser controla el thread Con pull tienes menos cantidad de código y es más simple Con pull puedes leer múltiples documentos con un solo thread Se puede filtrar el contenido XML innecesario
Comparación de parsers
StAX API Es bidireccional, permite leer y escribir Cursor API Iterator API
Cursor API Permite recorrer un documento XML de principio a fin Solo se mueve hacia adelante, no retrocede XMLStreamReader XMLStreamWriter
XMLStreamReader public int next() throws XMLStreamException; public boolean hasNext() throws XMLStreamException; public String getText(); public String getLocalName(); public String getNamespaceURI();
XMLStreamWriter public void writeStartElement(String localName) throws XMLStreamException; public void writeEndElement() throws XMLStreamException; public void writeCharacters(String text) throws XMLStreamException;
Iterator API