Streaming API for XML
A Streaming API for XML (StAX) XML-dokumentumokat író és olvasó alkalmazásprogramozási felület, mely a Java-közösségtől ered.
Hagyományosan az XML API-k vagy fa- (az egész dokumentum a memóriába kerül faszerkezetként az alkalmazás általi hozzáférésre), vagy eseményalapúak (az alkalmazás a dokumentumban elért entitások miatti eseményeket regisztrálja).
Mindkettőnek megvannak az előnyei: a DOM például lehetővé teszi a dokumentum gyors hozzáférését, az eseményalapú algoritmusoknak, mint a SAX memóriaigénye alacsony és gyorsabbak.
E hozzáférési változatok ellentétesnek tekinthetők. Egy faalapú API végtelen hozzáférést és változtatást tesz lehetővé, míg egy eseményalapú csupán áthalad a dokumentumon.
A StAX a két ellentét közti középútként lett megtervezve. Itt a program bemeneti helye egy dokumentumbeli helyet meghatározó kurzor. Az alkalmazás előrehelyezi a kurzort – az értelmezőből „húzva” a szükséges információt, szemben az eseményalapú API-kkal, például a SAX-szal, mely azt „tolja” az alkalmazásnak, ami az események közti állapot kezelését igényli a dokumentumbeli hely követéséhez.
Eredet[szerkesztés]
A StAX számos egymással nem kompatibilis XML API-ból ered, például az XMLPULL-ból,[1] melynek fejlesztői (Stefan Haustein és Aleksander Slominski) többek közt a BEA Systemszel, az Oracle-lel, a Sunnal és James Clarkkal is együttműködtek.
Példák[szerkesztés]
A JSR-173 specifikáció végleges, 1.0 verziójából:
„ |
Az alábbi Java API bemutatja a kurzoros megközelítés fő XML-olvasó metódusait. public interface XMLStreamReader {
public int next() throws XMLStreamException;
public boolean hasNext() throws XMLStreamException;
public String getText();
public String getLocalName();
public String getNamespaceURI();
// …a többi metódus nincs megjelenítve
}
Az API íróoldala tartalmaz StartElement és EndElement eseménytípusok olvasóoldalának megfelelő metódusokat. public interface XMLStreamWriter {
public void writeStartElement(String localName) throws XMLStreamException;
public void writeEndElement() throws XMLStreamException;
public void writeCharacters(String text) throws XMLStreamException;
// …a többi metódus nincs megjelenítve
}
5.3.1 XMLStreamReader E példa bemutatja a bemenetgyár és az olvasó létrehozásának, valamint egy XML-dokumentum elemein való iterálás módszerét. XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(…);
while (xmlStreamReader.hasNext()) {
xmlStreamReader.next();
}
|
” |
Jegyzetek[szerkesztés]
- ↑ XML Pull Parsing, 2023. január 1. (Hozzáférés: 2023. augusztus 11.)
Fordítás[szerkesztés]
Ez a szócikk részben vagy egészben a StAX című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
Források[szerkesztés]
- Introduction to StAX XML.com, Harold, Elliotte Rusty
- Java Streaming API for XML (Stax) - Tutorial
- XMLPull Patterns Article on XML Pull (and StAX) design patterns by Aleksander Slominski.
- StAX Parser - Cursor & Iterator APIs Article on Cursor & Iterator APIs by HowToDoInJava.
Kapcsolódó szócikkek[szerkesztés]
Versenyző és egymást kiegészítő módok XML Javában való feldolgozására (a kiadás laza időrendi sorrendjében):
- Document Object Model, az első szabványos, platformfüggetlen faalapú XML-feldolgozó modell, megfelelő Java-famodellek például a JDOM, a Dom4j és a XOM.
- Simple API for XML, XML-toló API
- Java XML Binding API, más (jellemzően adatfolyam-) értelmezőn működő API, Java-objektumokba és azokból köti össze az adatokat.
- Streaming XML
- XQuery API for Java