SAX si DOM
Articolul prezinta o comparatie succinta intre cele doua modalitati de prelucrare a fisierelor XML.
SAX si DOM sunt API-uri foarte diferite: SAX ofera posibilitatea modelarii parser-ului, in timp ce DOM modeleaza documentul. La prima vedere, abordarea DOM, ce permite accesarea nodurilor documentului prin apelarea unor functii specifice este de preferat abordarii SAX, ce declanseaza evenimente pe masura ce intalneste in fisier tag-uri de inceput/sfarsit.
Cu toate ca intrebuintarea SAX pare mai anevoioasa, se poate dovedi deosbit de eficienta. Programele SAX pot fi mult mai rapide decat omoloagele DOM si, aproape in toate cazurile, folosesc mai putina memorie. SAX isi arata utilitatea indeosebi in cazurile in care documentele sunt accesibile printr-un flux (de exemplu pe un socket), permitand procesarea independenta a diverselor parti ale documentului. Am putea face analogia cu o linie de asamblare in care la un moment este prelucrata o anumita parte a unui intreg. La polul opus se afla DOM, prelucrarile realizandu-se la nivelul intregului.
In concluzie, DOM se preteaza la aplicatiile monolitice, unde un singur program realizeaza toata procesarea, pe cand SAX este mai potrivit atunci cand procesul poate fi descompus in sarcini independente.
Criterii de selectie intre SAX si DOM
Urmatoarele considerente indica intrebuintarea SAX:
- Documentul are o dimensiunea prea mare ca sa incapa in memorie. In realitate acesta este un criteriu hotarator pentru alegerea SAX, neexistand alternativa
- Prelucrarile pot fi realizate asupra unor parti mici, nefiind necesara o imagine asupra intregului document. In cel mai rau caz dependentele sunt doar apriori: deciziile se iau doar pe baza informatiilor deja prelucrate, nebazandu-se pe ceea ce urmeaza.
- Procesarea poate fi impartita intr-o serie de operatii succesive
DOM este preferat in urmatoarele situatii:
- Procesarea necesita accesul simultan la parti disparate din acelasi document sau la mai multe documente
- Complexitatea structurala a sectiunilor interne este la fel de mare ca a documentului in sine
- Documentul trebuie modificat in mod repetat
- Prelucrarile sunt multiple si realizate in timp, nu pe durata unei singure parcurgeri
Exista cazuri in care imbinarea celor doua abordari se poate dovedi utila.