Simple API for XML (SAX), dosłownie: „proste API dla XML-a” – interfejs programistyczny do sekwencyjnego parsowania dokumentów XML. Jest to jeden z mechanizmów, który pozwala odczytywać dane zapisane w dokumentach XML. SAX jest popularną alternatywą dla DOM.

Przetwarzanie XML-a przez SAX edytuj

Parser, który implementuje SAX, działa jako parser strumieniowy sterowany zdarzeniami. Użytkownik określa szereg metod, które obsługują zdarzenia pojawiające się podczas przetwarzania danych. SAX rozpoznaje m.in. następujące elementy dokumentu XML:

  • węzły tekstowe
  • elementy
  • instrukcje przetwarzania
  • komentarze

Zdarzenia wywoływane są podczas napotkania któregokolwiek z powyższych elementów – dwukrotnie, na początku i na końcu. Atrybuty są dostępne jako część danych przekazywanych do procedury obsługi danego zdarzenia.

Przetwarzanie z użyciem SAX jest jednokierunkowe – wcześniej przetworzone dane nie mogą być ponownie odczytane bez ponownego uruchomienia całej procedury.

Przykład edytuj

Dla następującego dokumentu XML:

 <?xml version="1.0" encoding="UTF-8"?>
 <RootElement param="value">
     <FirstElement>
         Some Text
     </FirstElement>
     <SecondElement param2="something">
         Pre-Text <Inline>Inlined text</Inline> Post-text.
     </SecondElement>
 </RootElement>

parser SAX może wygenerować następującą sekwencję zdarzeń, wskazujących na wystąpienie kolejnych elementów dokumentu:

  • prolog dokumentu, nazwa xml, z atrybutem version o wartości "1.0" oraz encoding o wartości "UTF-8"
  • początek elementu, nazwa RootElement, z atrybutem param o wartości "value"
  • początek elementu, nazwa FirstElement
  • węzeł tekstowy o treści "Some Text" (uwaga: przetwarzanie węzłów tekstowych, zwłaszcza w odniesieniu do spacji może się nieco różnić)
  • koniec elementu, nazwa FirstElement
  • początek elementu, nazwa SecondElement, z atrybutem param2 o wartości "something"
  • węzeł tekstowy o treści "Pre-Text"
  • początek elementu, nazwa Inline
  • węzeł tekstowy o treści "Inlined text"
  • koniec elementu, nazwa Inline
  • węzeł tekstowy o treści "Post-text."
  • koniec elementu, nazwa SecondElement
  • koniec elementu, nazwa RootElement

Zobacz też edytuj

Linki zewnętrzne edytuj