Přeskočit na obsah

StAX

Z Wikipedie, otevřené encyklopedie

Streaming API for XML (StAX) je aplikační programovací rozhraní (API) pro čtení a zápis dokumentů XML, pocházející z komunity programovacího jazyka Java.

Tradičně jsou XML API buď:

  • Založeno na DOMu - celý dokument je načten do paměti jako stromová struktura pro náhodný přístup volající aplikací,
  • Založené na událostech - aplikace se registruje k přijímání událostí, jakmile se v zdrojovém dokumentu objeví entity.

Oba mají výhody: například DOM umožňuje náhodný přístup k celému dokumentu,[1] zatímco událostmi řízený algoritmus jako SAX, má malou paměťovou náročnost a je obvykle mnohem rychlejší.[2][3]

Tyto dva modely přístupu lze považovat za krajní protiklady. API založené na stromech umožňuje neomezený, náhodný přístup a manipulaci, zatímco API založené na událostech představuje „jednorázový“ průchod zdrojovým dokumentem.

Oproti nim byl StAX navržen jako kompromis mezi těmito dvěma protiklady. V modelu StAX je vstupním bodem programový kurzor, který představuje bod v dokumentu. Aplikace posouvá kurzor dopředu – „načítá“ (vytahuje, pull parser[4][5]) informace z analyzátoru podle potřeby. Tím se liší od API založeného na událostech – jako je SAX – které „vkládá“ (push parser[2]) data do aplikace – což vyžaduje, aby aplikace udržovala stav mezi událostmi podle potřeby pro sledování polohy v dokumentu.[4][5][6]

StAX má své kořeny v řadě nekompatibilních pull API pro XML, zejména v XMLPULL, jehož autoři (Stefan Haustein a Aleksander Slominski) spolupracovali mimo jiné se společnostmi BEA Systems, Oracle, Sun a Jamesem Clarkem.

Příklady

[editovat | editovat zdroj]

Ze specifikace JSR-173 • Final, V1.0 (používá se v rámci fair use).

Následující rozhraní Java API ukazuje hlavní metody pro čtení XML v kurzorovém přístupu.
public interface XMLStreamReader { 
  public int next() throws XMLStreamException; 
  public boolean hasNext() throws XMLStreamException; 
  public String getText(); 
  public String getLocalName(); 
  public String getNamespaceURI(); 
  // ...other methods not shown 
}
Strana API pro zápis má metody, které odpovídají straně pro čtení pro typy událostí „StartElement“ a „EndElement“.
public interface XMLStreamWriter { 
  public void writeStartElement(String localName) throws XMLStreamException;
  public void writeEndElement() throws XMLStreamException; 
  public void writeCharacters(String text) throws XMLStreamException; 
  // ...other methods not shown 
}
5.3.1 XMLStreamReader
Tento příklad ilustruje, jak vytvořit instanci vstupní továrny (Factory), dále čtečku (Reader) a iterovat přes prvky XML dokumentu.
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); 
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(...); 
while (xmlStreamReader.hasNext()) { 
  xmlStreamReader.next(); 
}

V tomto článku byl použit překlad textu z článku StAX na anglické Wikipedii.

  1. Stromová reprezentace. www.kosek.cz [online]. [cit. 2026-03-21]. Dostupné online.
  2. 1 2 KOSEK, Jiří. Push parsery [online]. www.kosek.cz [cit. 2026-03-17]. Dostupné online.
  3. HEROUT, Pavel. Java a XML. 1. vyd. České Budějovice: Kopp, 2007. 316 s. ISBN 978-80-7232-307-4. Kapitola Java a XML, SAX, s. 117–145.
  4. 1 2 KOSEK, Jiří. Pull parsery [online]. www.kosek.cz [cit. 2026-03-17]. Dostupné online.
  5. 1 2 HEROUT, Pavel. Java a XML. 1. vyd. České Budějovice: Kopp, 2007. 316 s. ISBN 978-80-7232-307-4. Kapitola JWSDP, StAX, s. 195–211.
  6. Push vs Pull Parsing Approach: What They Are & Key Differences Explained for Beginners (SAX vs StAX) [online]. 2025-11-21 [cit. 2026-03-14]. Dostupné online. (anglicky)

Literatura

[editovat | editovat zdroj]
  • HEROUT, Pavel. Java a XML. 1. vyd. České Budějovice: Kopp, 2007. 316 s. ISBN 978-80-7232-307-4. Kapitola JWSDP, StAX, s. 117–145.  – SAX, push parser
  • HEROUT, Pavel. Java a XML. 1. vyd. České Budějovice: Kopp, 2007. 316 s. ISBN 978-80-7232-307-4. Kapitola JWSDP, StAX, s. 195–211.  – StAX, pull parser
  • KOSEK, Jiří. PHP a XML. 1. vyd. Praha: Grada, 2009. 368 s. ISBN 978-80-247-1116-4. Kapitola XMLReader, s. 163–168.  – XMLReader, validující pull parser v PHP

Související články

[editovat | editovat zdroj]

Konkurenční a doplňkové způsoby zpracování XML v Javě (pořadí je volně založeno na datu prvního zavedení):

  • DOM (Document Object Model), první standardizovaný, jazykově/platformově nezávislý stromový model zpracování XML; alternativní stromové modely Java zahrnují JDOM, Dom4j a XOM
  • SAX (Simple API for XML), standardní XML push API
  • JAXB (Java XML Binding API), pracuje nad jiným parserem (obvykle streamovacím parserem), váže obsažená data do/z objektů Java.

Externí odkazy

[editovat | editovat zdroj]
StAX
Morty Proxy This is a proxified and sanitized view of the page, visit original site.