duminică, 2 noiembrie 2008

DOM vs SAX

Pentru a retine informatii in mod organizat si interpretabil de catre o masina a fost creat limbajul XML: datele sunt impartite in elemente de informatii, fiecare element fiind incadrat de un tag pentru a fi delimitat de celelalte elemente. Insa nu este de ajuns sa facem arhive cu tot soiul de informatii: memoram respectivele date pentru ca mai avem nevoie de ele si alta data. Pentru a le refolosi trebuie sa le extragem din fisierele XML; acest lucru se realizeaza parsand aceste fisiere, adica extragand informatia utila dintre tag-uri. Cum parsarea presupune rescrierea aceluiasi cod, in ajutorul nostru vin parserele: ele ne ofera o serie de functii cu care extragem elementele si atributele care ne intereseaza.


Doua dintre cele mai folosite parsere de XML sunt DOM si SAX. Desi in final ele realizeaza acelasi lucru (extragerea informatiei dorite), exista deosebiri fundamentale intre cele 2 parsere:


    • DOM (Document Object Model) este bazat pe organizarea documentului sub forma de arbore (de aici si denumirea: din fisierul XML este creat un document modelat dupa forma unui arbore)

      - avantaj: avem modelul deja creat
      - dezavantaj: modelul de arbore poate fi prea complex pentru ce avem nevoie

    • SAX (Simple API for Xml) este bazat pe evenimente: la aparitia tag-ului specificat se declanseaza un eveniment (se executa o metoda desemnata anterior)

      - avantaj: ne putem crea propriul model de document, care poate fi mai simplu decat un arbore
      - dezavantaj: nu putem sti intotdeauna ce vrem sa facem de la prima aparitie a elementului




    • DOM incarca tot fisierul XML in memorie si apoi se plimba prin el

      - avantaj: se poate trece de mai multe ori prin fisier
      - dezavantaj: - se consuma multa memorie, existand posibilitatea sa nu ajunga toata memoria in cazul fisierelor XML mari
      - parsarea dureaza mai mult

    • SAX parseaza fisierul XML pe masura ce vine

      - avantaj: - consum mic de memorie
      - mai rapid
      - dezavantaj: nu ma pot intoarce la informatia deja citita




    • DOM ofera o interfata catre fisierele XML de nivel ridicat

    • SAX ofera acces la fisierele XML la un nivel mai coborat




    • DOM este un standard W3C

    • SAX nu este un standard


In concluzie, DOM este un parser mai complex, care face toata treaba in locul nostru: citeste fisierul XML, creeaza un obiect din acest fisier si ne da o referinta catre acest obiect (un document), pe care putem apoi sa il manipulam dupa cum dorim. SAX in schimb nu face altceva decat sa detecteze prezenta unui anumit tag, in acest caz declansand un eveniment; noi suntem responsabili de interpretarea acestor evenimente, prin crearea unei clasa care sa trateze evenimentele.


Cand utilizam DOM si cand utilizam SAX?



Pe baza celor descrise mai sus voi exemplifica utilizarea unuia sau altuia dintre parsere. Sa presupunem ca avem reprezentate intr-un fisier XML datele despre studentii unei facultati: data personale si situatia scolara. Mai presupunem ca facultatea acorda burse tuturor studentilor cu medii mai mari de 8,50. In acest caz, pentru a afla studentii care primesc bursa este de ajuns sa folosim SAX. Daca insa bursele se acorda pentru un numar fix de studenti, in ordine descrescatoare a mediilor, avem nevoie de DOM, intrucat nu putem sti dintr-o singura parcurgere care student poate primi bursa.

Niciun comentariu:

Trimiteți un comentariu