Streaming API for XML

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

Parsing strumieniowy

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 analizowania 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.

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[2].

Istniejące implementacje

Zobacz też

Przypisy

  1. The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 173 [online], www.jcp.org [dostęp 2017-11-26].
  2. IBM developerWorks : Sorry, that page no longer exists [online], www.ibm.com [dostęp 2018-02-09] (ang.).

Linki zewnętrzne

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.
Kembali kehalaman sebelumnya