Streaming API for XML (StAX) er et applikasjonsprogrammeringsgrensesnitt ( API ) for lesing og skriving av XML -dokumenter , som kommer fra Java-programmeringsspråksamfunnet .
Tradisjonelt er XML APIer en av to typer:
Begge har fordeler, førstnevnte (f.eks . DOM ) gir tilfeldig tilgang til dokumentet, sistnevnte (f.eks . SAX ) krever et lite minneavtrykk og er vanligvis mye raskere.
Disse to tilgangsparadigmene kan betraktes som polare motsetninger. En trebasert API tillater ubegrenset tilfeldig tilgang og manipulering, mens en hendelsesbasert API er en "engangs"-passering gjennom kildedokumentet.
StAX ble designet som en mellomting mellom disse to polare motsetningene. I StAX-paradigmet er programmeringsinngangspunktet en markør som representerer et punkt i dokumentet. Appen flytter markøren fremover ("trekker" parserinformasjonen etter behov). Dette er forskjellig fra en hendelsesbasert API, for eksempel SAX, som "pusher" data til applikasjonen (krever at applikasjonen opprettholder tilstanden mellom hendelser da det er nødvendig å holde styr på plassering i dokumentet).
StAX har sine røtter i en rekke inkompatible XML pull APIer, spesielt XMLPULL , hvor forfatterne (Stefan Haustein og Aleksander Slominski) samarbeidet med blant annet BEA Systems , Oracle , Sun og James Clark .
Fra den endelige spesifikasjonen til JSR-173 V1.0 (brukt under rimelig bruk).
Dato:
Følgende Java API viser hovedmetodene for å lese XML på markørfokus. offentlig grensesnitt XMLStreamReader { public int next () kaster XMLStreamException ; public boolean hasNext () kaster XMLStreamException ; offentlig streng getText (); offentlig streng getLocalName (); offentlig streng getNamespaceURI (); // ...andre metoder vises ikke } Skrivedelen av APIen har metoder som tilsvarer lesedelen for hendelsestypene "StartElement" og "EndElement". offentlig grensesnitt XMLStreamWriter { public void writeStartElement ( String localName ) kaster XMLStreamException ; public void writeEndElement () kaster XMLStreamException ; public void writeCharacters ( String text ) kaster XMLStreamException ; // ...andre metoder vises ikke } 5.3.1 XMLStreamReader Dette eksemplet illustrerer hvordan du instansierer en inndatafabrikk, oppretter en leser og itererer over elementene i et XML-dokument. XMLInputFactory xmlInputFactory = XMLInputFactory . newInstance (); xmlStreamReader xmlStreamReader = xmlInputFactory . createXMLStreamReader (...); while ( xmlStreamReader . hasNext ()) { xmlStreamReader . neste (); }Utfyllende måter å behandle XML i Java på: