[go: nahoru, domu]

Vés al contingut

StAX: diferència entre les revisions

De la Viquipèdia, l'enciclopèdia lliure
Contingut suprimit Contingut afegit
Robot posa data a plantilles de manteniment
m eliminant enllaços externs trencats
 
(2 revisions intermèdies per un altre usuari que no es mostra)
Línia 13: Línia 13:
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<classe>
<classe>
<alumne>
<alumne>
<nom>Federicu Pi</nom>
<nom>Federicu Pi</nom>
</alumne>
</alumne>
<alumne>
<alumne>
<nom>Marcelinu Paivinu</nom>
<nom>Marcelinu Paivinu</nom>
</alumne>
</alumne>
<alumne>
<alumne>
<nom>Filomeno Garcia</nom>
<nom>Filomeno Garcia</nom>
</alumne>
</alumne>
</classe>
</classe>
</syntaxhighlight>
</syntaxhighlight>
Línia 35: Línia 35:
while (parser.hasNext())
while (parser.hasNext())
{
{
int eventCode = parser.next();
int eventCode = parser.next();
if (eventCode == XMLStreamReader.START_ELEMENT)
if (eventCode == XMLStreamReader.START_ELEMENT)
{
{
if ("nom".equals(parser.getLocalName()) {
if ("nom".equals(parser.getLocalName()) {
System.out.println(parser.getElementText());
System.out.println(parser.getElementText());
}
}
}
}
}
}
</syntaxhighlight>
</syntaxhighlight>
Línia 47: Línia 47:
== Referències ==
== Referències ==
* {{ref-web |url=http://docs.oracle.com/javase/tutorial/jaxp/stax/index.html |títol=Streaming API for XML |consulta=4 febrer 2014}}
* {{ref-web |url=http://docs.oracle.com/javase/tutorial/jaxp/stax/index.html |títol=Streaming API for XML |consulta=4 febrer 2014}}
* {{ref-web |url=http://stax.codehaus.org/ |títol=The Streaming API for XML (StAX) |consulta=4 febrer 2014 |arxiuurl=https://web.archive.org/web/20100724040030/http://stax.codehaus.org/ |arxiudata=24 de juliol 2010 }}
* {{ref-web |url=http://stax.codehaus.org/ |títol=The Streaming API for XML (StAX) |consulta=4 febrer 2014 |arxiuurl=https://web.archive.org/web/20100724040030/http://stax.codehaus.org/ |arxiudata=24 de juliol 2010}}


== Enllaços externs ==
== Enllaços externs ==
;Implementacions en llenguatge Java
;Implementacions en llenguatge Java
* [http://stax.codehaus.org/ Reference Implementation] {{Webarchive|url=https://web.archive.org/web/20100724040030/http://stax.codehaus.org/ |date=2010-07-24}} (Implementació de referència JSR-173)
* [https://sjsxp.dev.java.net Sun Java StAX XML Processor]{{Enllaç no actiu|bot=InternetArchiveBot |data=2021 }} Open source. Forma part del Java SE des de la versió 6
* [http://stax.codehaus.org/ Reference Implementation] {{Webarchive|url=https://web.archive.org/web/20100724040030/http://stax.codehaus.org/ |date=2010-07-24 }} (Implementació de referència JSR-173)
* [http://woodstox.codehaus.org Woodstox] {{Webarchive|url=https://web.archive.org/web/20150525234136/http://woodstox.codehaus.org/ |date=2015-05-25}} Implementació de codi obert
* [http://woodstox.codehaus.org Woodstox] {{Webarchive|url=https://web.archive.org/web/20150525234136/http://woodstox.codehaus.org/ |date=2015-05-25 }} Implementació de codi obert
* [http://wiki.fasterxml.com/AaltoHome Aalto] {{Webarchive|url=https://web.archive.org/web/20100422200438/http://wiki.fasterxml.com/AaltoHome |date=2010-04-22}} parser d'alt rendiment
* [http://wiki.fasterxml.com/AaltoHome Aalto] {{Webarchive|url=https://web.archive.org/web/20100422200438/http://wiki.fasterxml.com/AaltoHome |date=2010-04-22 }} parser d'alt rendiment


[[Categoria:Programació]]
[[Categoria:Programació]]

Revisió de 08:29, 20 ago 2024

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

[modifica]

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

[modifica]

Enllaços externs

[modifica]
Implementacions en llenguatge Java