Przejdź do zawartości

Streaming API for XML

Z Wikipedii, wolnej encyklopedii
To jest stara wersja tej strony, edytowana przez MastiBot (dyskusja | edycje) o 12:47, 15 mar 2010. Może się ona znacząco różnić od aktualnej wersji.

StAX (Streaming API for XML) jest interfejsem programistycznym aplikacji (API) napisanym w języku Java służącym do odczytywania i zapisywania dokumentów w formacie XML. Standard ten jest zrealizowaną w Javie ideą parsowania strumieniowego. Został on opracowany w ramach JSR-173[1], a implementacja parsera była znana także jako Sun Java Streaming XML Parser.

Parsowanie strumieniowe

Tradycyjnie, API do obsługi XML zbudowane są na bazie modeli:

  • drzewa (DOM) - cały dokument XML jest wczytywany jako obiektowy model drzewa do pamięci operacyjnej, a programista może w dowolnym momencie pobrać referencje do dowolnego elementu;
  • zdarzeń (SAX) - dokument XML jest przetwarzany jednorazowo począwszy od początku, aż do końca, a programista określa szereg metod, które obsługują zdarzenia pojawiające się podczas przetwarzania danych.

Obydwa te podejścia mają zarówno swoje zalety jak i wady. DOM przykładowo oferuje bardzo łatwy, nieograniczony i intuicyjny dostęp do struktury dokumentu XML, lecz niestety w przypadku parsowania dużych dokumentów XML konsumuje olbrzymie zasoby pamięci operacyjnej, a ponadto jest dosyć wolny. SAX natomiast wręcz odwrotnie - nie konsumuje pamięci prawie wcale, jest bardzo szybki, lecz manipulowanie zdarzeniami dostarczanymi z parsera jest bardzo niewygodne, można wręcz rzec toporne, w zestawieniu z DOM[2].

StAX został zaprojektowany aby przynajmniej częściowo pogodzić te dwa podejścia. Metaforą przetwarzania strumieniowego w StAX jest kursor, który reprezentuje pojedynczy punkt w całym dokumencie XML. Programista zawsze wie, gdzie kursor się znajduje, może na żądanie przesuwać ten kursor do przodu i pobierać informacje z parsera wedle własnego uznania. Jest to podejście podobne do tego używanego w modelu zdarzeń takim jak SAX, lecz z tą różnicą, że informacje z parsera są przesyłane tylko na żądanie, a nie jak w przypadku SAX, który przesyła je bez względu na to czy są potrzebne czy też nie.

Geneza

StAX ma swoje korzenie w wielu niekompatybilnych pomiędzy sobą API do przetwarzania strumieniowego dokumentów XML, lecz przede wszystkim czerpie z bardzo szybkiego rozwiązania jakim jest XML Pull Parser (XPP) autorstwa Stefana Hausteina i Aleksandra Słomińskiego[3].

Istniejące implementacje

Zobacz ponadto

  • DOM - obiektowy model dokumentu jest pierwszym standaryzowanym, niezależnym platformowo, drzewiastym modelem przetwarzania dokumentu XML (istnieją jego różne warianty, jak np. JDOM, Dom4j, XOM).
  • SAX - standardowy parser XML oparty na modelu zdarzeniowym.
  • JAXB Java XML Binding API - pracuje na podbudowie innych parserów XML i tworzy mapowanie struktury XML na obiekty Java.

Linki zewnętrzne

Referencje