Analizador Java StAX - Descripción general

StAX es una API basada en Java para analizar documentos XML de forma similar a como lo hace el analizador SAX. Pero hay dos diferencias importantes entre las dos API:

  • StAX es una API PULL, mientras que SAX es una API PUSH. Significa que en el caso del analizador StAX, una aplicación cliente necesita pedirle al analizador StAX que obtenga información de XML siempre que lo necesite. Pero en el caso del analizador SAX, se requiere una aplicación cliente para obtener información cuando el analizador SAX notifica a la aplicación cliente que la información está disponible.

  • StAX API puede leer y escribir documentos XML. Con SAX API, solo se puede leer un archivo XML.

Configuración del entorno

Para usar el analizador StAX, debe tener stax.jar en la ruta de clase de su aplicación.

Las siguientes son las características de la API de StAX:

  • Lee un documento XML de arriba a abajo, reconociendo los tokens que componen un documento XML bien formado.

  • Los tokens se procesan en el mismo orden en que aparecen en el documento.

  • Informa al programa de aplicación de la naturaleza de los tokens que el analizador ha encontrado a medida que ocurren.

  • El programa de aplicación proporciona un lector de "eventos" que actúa como un iterador e itera sobre el evento para obtener la información requerida. Otro lector disponible es el "cursor" que actúa como puntero a los nodos XML.

  • A medida que se identifican los eventos, los elementos XML se pueden recuperar del objeto de evento y se pueden procesar más.

¿Cuándo usar?

Debería utilizar un analizador StAX cuando:

  • Puede procesar el documento XML de forma lineal de arriba a abajo.

  • El documento no está profundamente anidado.

  • Está procesando un documento XML muy grande cuyo árbol DOM consumiría demasiada memoria. Las implementaciones DOM típicas usan diez bytes de memoria para representar un byte de XML.

  • El problema a resolver involucra solo una parte del documento XML.

  • Los datos están disponibles tan pronto como los ve el analizador, por lo que StAX funciona bien para un documento XML que llega a través de una secuencia.

Desventajas de SAX

  • No tenemos acceso aleatorio a un documento XML, ya que se procesa solo de manera reenviada.

  • Si necesita realizar un seguimiento de los datos que el analizador ha visto o dónde el analizador ha cambiado el orden de los elementos, debe escribir el código y almacenar los datos por su cuenta.

Clase XMLEventReader

Esta clase proporciona un iterador de eventos que se puede usar para iterar sobre los eventos a medida que ocurren mientras se analiza un documento XML.

  • StartElement asStartElement() - Se utiliza para recuperar el valor y los atributos de un elemento.

  • EndElement asEndElement() - Llamado al final de un elemento.

  • Characters asCharacters() - Se puede utilizar para obtener caracteres como CDATA, espacios en blanco, etc.

Clase XMLEventWriter

Esta interfaz especifica métodos para crear un evento.

  • add(Event event) - Agregar eventos que contienen elementos a XML.

XMLStreamReader (clase)

Esta clase proporciona un iterador de eventos que se puede usar para iterar sobre los eventos a medida que ocurren mientras se analiza un documento XML.

  • int next() - Se utiliza para recuperar el próximo evento.

  • boolean hasNext() - Se utiliza para comprobar que existen o no más eventos.

  • String getText() - Se usa para obtener el texto de un elemento.

  • String getLocalName() - Se usa para obtener el nombre de un elemento.

XMLStreamWriter (clase)

Esta interfaz especifica métodos para crear un evento.

  • writeStartElement(String localName) - Agregue un elemento inicial de nombre de pila.

  • writeEndElement(String localName) - Agregue un elemento final del nombre de pila.

  • writeAttribute(String localName, String value) - Escribir atributos en un elemento.