Streaming API pro XML
Streaming API for XML ( StAX ) je rozhraní pro programování aplikací (API) pro zpracování souborů XML z prostředí Java .
Referenční implementace je k dispozici jako svobodný software pod podmínkami licence Apache .
technologie
XML API jsou tradičně:
- na stromě
- (např. DOM ) - celý dokument se načte do paměti jako stromová struktura a lze k němu přistupovat přímo odtud.
- událost založená
- (např. SAX ) - aplikace obdrží událost, když jsou v dokumentu objeveny nové entity.
Obě varianty mají výhody i nevýhody: první umožňuje náhodný přístup k dokumentu, ale musí dokument uchovávat v paměti, a proto vyžaduje více paměti. Druhým je jediný průchod zdrojovým dokumentem, a proto téměř nevyžaduje žádnou paměť a je také rychlejší při analýze, ale neumožňuje přímý přístup k prvkům nebo změnám ve stromu.
StAX byl navržen jako prostředník mezi těmito dvěma protiklady. V metaforě StAX je programovou položkou kurzor, který představuje bod v dokumentu. Aplikace posune kurzor dopředu, takže získá informace, které potřebuje, z analyzátoru přesně v případě potřeby. To se liší od API založeného na událostech, jako je SAX, které aktivně odesílá data do aplikace a tak nutí aplikaci spravovat informace o stavu mezi událostmi, aby bylo možné zaznamenat aktuální pozici v dokumentu.
Kromě přístupu k datům XML pomocí kurzoru nabízí StAX také metodu iterátoru. Metoda iterátoru dodává data ve formě objektů, které jsou odvozeny z třídy XMLEvent. Vytvořené objekty nabízejí vývojáři Java více možností než řetězcové objekty v metodě kurzoru, ale snižují výkon.
Spolu s DOM, SAX a XSLT je StAX jedním z rozhraní Java API pro zpracování XML .
Počátky
StAX má své kořeny v celé řadě programových rozhraní řízených událostmi, především v „XMLPULL“, jejichž autoři ( Stefan Haustein a Aleksandr Slominski ) spolupracovali mimo jiné s BEA , Oracle , Sun Microsystems , Breeze Factor a Jamesem Clarkem .
webové odkazy
- JSR-173 - StAX (anglicky)
- Úvod do StAX na xml.com (anglicky)
- XMLPull.org (anglicky)
- Výkonnostní papír společnosti Sun Microsystems, Inc., 2005-08 (anglicky, PDF, 203 kB)