LINUXSOFT.cz Přeskoč levou lištu

ARCHIV



   

> Programujeme s XML (7.) - Simple API for XML

Simple API for XML neboli SAX je alternativní rozhraní XML parserů, osobně si myslím, že je pro běžného programátora užitečné jen ve velmi speciálních případech, a proto se u něj jen rychle teoreticky zastavíme.

13.7.2004 15:00 | Aleš Hakl | Články autora | přečteno 13529×

Simple API for XML neboli SAX na rozdíl od rozhraní DOM nenačítá dokument do stromu v paměti, ale pouze jej proudově čte a volá funkce/metody/signály, které si aplikace k tomuto účelu nastavila. Dle mého názoru to není příliš uživatelsky přívětivé, ale pokud pouze potřebujeme dokument rychle projít a nepotřebujeme funkcionalitu DOM, je to rozhodně rychlejší. Za zmínku jistě stojí, že většina implementací DOM používá SAX jako rozhraní k vlastnímu parseru.

Implementací SAXu je velmi mnoho, a protože se nejedná o žádný standard, ale spíše takovou úmluvu, je každá poněkud odlišná. Proto se nebudu zabývat konkrétními detaily a omezím se pouze na popis jednotlivých událostí, které jsou ve všech implementacím více méně identické.

characters

Tato událost je vyvolána pro znaková data ve vstupním proudu. Stejně jako textové uzly v DOM stromu může být vyvoláná několikrát po sobě. V případě SAXu je tato situace navíc daleko pravděpodobnější, jelikož k událostem často dochází již při načítání dokumentu, které se může zastavit uprostřed textu.

endDocument

Tato událost je, jak již název napovídá, vyvolána na konci dokumentu. Také je vyvolána v případě, že dojde k nějaké chybě během zpracování (dokument není well-formed a podobně).

endElement

Výskyt uzavírajícího tagu elementu vyvolá tuto událost, jako parametr dostaneme jméno elementu a v případě SAX2 (s podporou jmenných prostorů) také jeho lokální jméno (část za dvojtečkou) a URI jmenného prostoru.

endPrefixMapping

Tato událost dostupná pouze v SAX2 nás informuje o tom, že prefix jmenného prostoru pozbyl platnosti. Pro běžné zpracování dokumentu nepotřebujeme tuto událost nijak řešit.

ignorableWhitespace

Pokud by naše aplikace potřebovala zpracovávat mezery, nové řádky a podobné znaky, které se v XML slučují do jednoho, použijeme tuto událost.

processingInstruction

Událost processingInstruction je vyvolána při výskytu instrukce pro zpracování, jako parametry dostaneme cíl instrukce a vlastní obsah. Na rozdíl od události characters je vyvolána vždy pro celou instrukci.

skippedEntity

Pokud parser z nějakého důvodu přeskočí entitu, vyvolá tuto událost. Důvodem k přeskočení entity může být například to, že neví, za jaký obsah jí má nahradit.

startDocument

Toto je první skutečná událost, která je vyvolána při zpracování XML dokumentu. Je to vhodné místo pro přípravu datových struktur do kterých načítáme a podobně.

startElement

Otevírající tag elementu způsobí tuto událost. V parametrech nalezneme jeho jméno (a případně lokální jméno a URI jmenného prostoru) a atributy v podobě poměrně zajímavé datové struktury obsahující i různé další užitečné informace kromě hodnoty, ovšem právě v řešení této struktury se implementace často liší, například v PHP je použito běžné asociativní pole.

startPrefixMapping

Tato událost, jež je protějškem události endPrefixMapping, nám oznamuje, že parser vstoupil do rozsahu platnosti prefixu jmenného prostoru. V běžných aplikacích se nemusíme touto událostí znepokojovat, protože parametry události startElement a jiné jmennými prostory ovlivňované hodnoty jsou správně nastaveny a rozvinuty automaticky. Dokumentace SAX2 uvádí, že tato metoda je užitečná v případě výskytu prefixů jmenných prostorů v textu nebo hodnotách atributů, osobně jsem takový dokument ještě neviděl.

Při tvorbě tohoto popisu jsem vycházel z originální dokumentace javového SAX2 a SAX. Různé implementace se výrazně liší. Jistě se najdou aplikace, pro které je SAX vhodný, ale vzhledem k tomu, že se jedná o dost nízkoúrovňovou záležitost, myslím, že jako rychlý úvod tento článek stačil, a kdo má důvod SAX použít, jistě si sám potřebnou dokumentaci najde a nebo položí dotaz v diskuzi. Příště se, jak jsem již slíbil minule, podíváme na jazyk XSLT určený pro transformace XML dokumentů.

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

28.11.2018 23:56 /František Kučera
Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1

12.11.2018 21:28 /Redakce Linuxsoft.cz
22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář

6.11.2018 2:04 /František Kučera
Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

4.10.2018 21:30 /Ondřej Čečák
LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář

18.9.2018 23:30 /František Kučera
Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář

9.9.2018 14:15 /Redakce Linuxsoft.cz
20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business. Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář

12.8.2018 16:58 /František Kučera
Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář

16.7.2018 1:05 /František Kučera
Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

31.7.2023 14:13 / Linda Graham
iPhone Services

30.11.2022 9:32 / Kyle McDermott
Hosting download unavailable

13.12.2018 10:57 / Jan Mareš
Re: zavináč

2.12.2018 23:56 / František Kučera
Sraz

5.10.2018 17:12 / Jakub Kuljovsky
Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2024) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze