Streaming API for XML

Streaming API for XML ( StAX ) to interfejs programowania aplikacji (API) do przetwarzania plików XML z języka Java .

Implementacja referencyjna jest dostępny jako wolne oprogramowanie zgodnie z warunkami licencji Apache .

technologia

Tradycyjnie interfejsy API XML to:

oparte na drzewie
(np. DOM ) - cały dokument jest wczytywany do pamięci jako struktura drzewiasta i można uzyskać do niego bezpośredni dostęp.
na podstawie wydarzenia
(np. SAX ) - aplikacja odbiera zdarzenie w przypadku wykrycia nowych podmiotów w dokumencie.

Oba warianty mają zalety i wady: pierwszy umożliwia swobodny dostęp do dokumentu, ale musi przechowywać dokument w pamięci i dlatego wymaga większej ilości pamięci. Drugi to pojedyncze przejście przez dokument źródłowy i dlatego prawie nie wymaga żadnej pamięci, a także jest szybszy podczas analizowania, ale nie pozwala na bezpośredni dostęp do elementów lub zmian w drzewie.

StAX został zaprojektowany jako środek między tymi dwoma przeciwieństwami. W metaforze StAX wpis programowy to kursor reprezentujący punkt w dokumencie. Aplikacja przesuwa kursor do przodu, więc pobiera potrzebne informacje z parsera dokładnie wtedy , gdy są potrzebne. Różni się to od interfejsu API opartego na zdarzeniach, takiego jak SAX, który aktywnie przesyła dane do aplikacji, a tym samym zmusza aplikację do zarządzania informacjami o statusie między zdarzeniami w celu zarejestrowania aktualnej pozycji w dokumencie.

Oprócz dostępu do danych XML za pomocą kursora, StAX oferuje również metodę iteratora. Metoda iteratora dostarcza dane w postaci obiektów, które pochodzą z klasy XMLEvent. Utworzone obiekty oferują programiście Java więcej opcji niż obiekty typu string w metodzie kursora, ale zmniejszają wydajność.

Wraz z DOM, SAX i XSLT, StAX jest jednym z interfejsów Java API do przetwarzania XML .

Pochodzenie

StAX ma swoje korzenie w całej gamie interfejsów programistycznych sterowanych zdarzeniami, głównie "XMLPULL", których autorzy ( Stefan Haustein i Aleksandr Słominski ) pracowali między innymi z BEA , Oracle , Sun Microsystems , Breeze Factor i James Clark .

linki internetowe