Ce este DOM-ul ? Pe scurt, Document Object Model. Pe romaneste, este o interfata de programare object-based dezvoltata de World Wide Web Consortium (W3C). Permite accesul in informatia stocata intr-un fisier XML ca intr-un arbore cu noduri. SAX (Simple API for XML) este, pe de alta parte, o interfata de programare event-based, dezvoltata de XML-DEV si nu este recunoscuta de W3C. Acceseaza informatia dintr-un XML ca pe o serie de evenimente.
Sunt ele diferite ? In fapt, DOM si SAX fac cam acelasi lucru, manipuleaza XML-uri, dar modul in care il fac este diferit si foarte important.
Haideti sa luam document XML si sa vedem cum parseaza, pe rand, DOM si SAX:
XML Document
<?xml version="1.0"?>Modelul pe care-l creeaza DOM este urmatorul:
<Employees>
<Employee>
<EmpID>1</EmpID>
<EmpName>Ravi</EmpName>
<Telephone>
<House>080-6660666</House>
<Office>080-5550555</Office>
</Telephone>
</Employee>
<Employee>
<EmpID>2</EmpID>
<EmpName>kiran</EmpName>
<Telephone>
<House>080-3330333</House>
<Office>080-4440444</Office>
</Telephone>
</Employee>
</Employee>
SAX, in schimb, creeaza o serie de evenimente inlantuite ale datelor din XML-ul de mai sus. Seria aceasta seamana foarte mult cu evenimentele din Visual Basic (daca isi mai aduce aminte cineva) onMouseover, Onclick. Parser-ul SAX genereaza aceste evenimente pentru fiecare inchidere si deschidere de tag-uri, instructiuni, DTD-uri, comenturi, entitati. Sa vedem cum arata exemplul de mai sus dupa ce se parseaza cu SAX:
<Employees> <Employee> <EmpID> 1 </EmpID>…
(Si tot asa pana la capatul fisierului)
DOM creeaza o reprezentare in memorie a intregului document, pe cand SAX nu cere ca intreg documentul sa se afle in memorie. Din aceasta cauza, DOM-ul are nevoie de o mai multe resurse si nu este recomandat pentru documente de marimi considerabile. Dupa cum ii spune si numele, SAX-ul este o metoda foarte simpla de a procesa documente XML, dar pune povara pe umerii programatorului. Asta pentru ca in SAX, programatorul trebuie sa-si creeze propriul lui model de obiecte si sa scrie cod ce raspunde la evenimentele generate de parser. Astfel, putem folosi DOM cu mai putin cod, dar pentru a folosi SAX avem nevoie de ceva munca.
Din punct de vedere al eficientei, cred ca SAX se comporta mai bine atunci cand modelul de obiecte pe care programatorul trebuie sa si-l defineasca este mai simplu decat cel generat automat de DOM. Asta pentru ca SAX poate fi foarte rapid la runtime.
Navigarea aleatoare este disponibila in DOM pentru ca modelul arbore este tot timpul in memorie. De cealalta parte, SAX proceseaza documentul XML secvential, asa ca revenirea la anumite date anterioare nu este posibila. Acesta este un mare dezavantaj pentru cei care folosesc SAX. Singurul lucru pe care-l poti face este sa retii undeva aceasta informatie scriind cod in plus. Si asta rezulta in incarcarea memoriei si, deci, marirea timpului de executie, si, practic, nu ar mai avea rost sa folosesti deci SAX.
Ca o concluzie, alegerea intre DOM si SAX se ia tinand cont de nenumarati factori, gen marimea fisierului XML, viteza, resurse de memorie, navigare si, cateodata, de usurinta in programare. Este important, totusi, de tinut minte ca putem chiar combina DOM si SAX intr-o singura aplicatie. Putem folosi un sir SAX pentru a crea un arbore DOM sau putem folosi DOM pentru a genera un sir de evenimente SAX.
Niciun comentariu:
Trimiteți un comentariu