StAX

Streaming API for XML (StAX) és una interfície de programació de programes per llegir i escriure documents XML que intenta superar els problemes que tenen els dos sistemes tradicionals de llegir fitxers XML: sistemes basats en events (SAX és el més habitual) i DOM.

StAX intenta aprofitar-se del millor dels dos sistemes:

  • No necessita carregar tot el document a memòria com fan els sistemes basats en DOM de manera que consumeix pocs recursos
  • Permet que sigui l'usuari i no el parser el que controla el processament del fitxer XML
  • Permet crear documents XML com ho fa DOM

StAX va ser dissenyat pensant en el concepte de cursor (un punt dins del document) que és mogut per l'aplicació a mesura que li fa falta la informació. Funciona amb un sistema conegut com a Pull parsing que es contraposa a la forma de treballar de SAX (Push parsing) on és el parser el que controla la sortida de la informació i l'aplicació es veu obligada a mantenir l'estat dels events per saber on està en el document.

Exemple

Suposem que partim del següent fitxer XML del que es vol fer un llistat amb el nom dels alumnes

<?xml version="1.0" encoding="UTF-8"?>
<classe>
 <alumne>
 <nom>Federicu Pi</nom>
 </alumne>
 <alumne>
 <nom>Marcelinu Paivinu</nom>
 </alumne>
 <alumne>
 <nom>Filomeno Garcia</nom>
 </alumne>
</classe>

El primer és crear un parser StAX a partir de l'objecte de referència XMLStreamReader al que li passem la referència al fitxer XML:

FileReader r = new FileReader("alumnes.xml");
XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(r);

Un cop es té el parser només cal anar avançant pel fitxer (next()) fins que es troba l'etiqueta que es vol (*nom*) i s'imprimeix per pantalla el seu contingut. La funció hasNext() serveix per comprovar quan s'ha arribat al final del fitxer

while (parser.hasNext())
{
 int eventCode = parser.next();
 if (eventCode == XMLStreamReader.START_ELEMENT)
 { 	 
 if ("nom".equals(parser.getLocalName()) { 
 System.out.println(parser.getElementText());
 }
 }
}

Referències

  • «Streaming API for XML». [Consulta: 4 febrer 2014].
  • «The Streaming API for XML (StAX)». Arxivat de l'original el 24 de juliol 2010. [Consulta: 4 febrer 2014].

Enllaços externs

Implementacions en llenguatge Java
  • Sun Java StAX XML Processor[Enllaç no actiu] Open source. Forma part del Java SE des de la versió 6
  • Reference Implementation Arxivat 2010-07-24 a Wayback Machine. (Implementació de referència JSR-173)
  • Woodstox Arxivat 2015-05-25 a Wayback Machine. Implementació de codi obert
  • Aalto Arxivat 2010-04-22 a Wayback Machine. parser d'alt rendiment