Documente Academic
Documente Profesional
Documente Cultură
DOM
Reprezinta documentul ca un arbore Arborele este integral incarcat in RAM (mare consumator de memorie) Nodurile arborelui pot fi de multiple tipuri: radacina, element, atribut, text, comentariu etc.
SAX
Reprezinta documentul ca un string brut Nu incarca tot documentul in memorie, ci doar un subsir al acestuia care e analizat in scopul detectarii marcatorilor La detectarea unui marcator se declanseaza evenimente ce trebuie tratate
Standardul DOM este accesibil n majoritatea limbajelor de programare, dar poate fi nsoit de variante optimizate sintactic. Ex: n PHP exista numeroase biblioteci de funcii DOM, dintre care 2 sunt frecvent folosite:
clasa DOMDocument, complet i compatibil cu standardul DOM clasa SimpleXMLElement, varianta simplificat - nu suport spaii de nume si validare, dar aduce sintaxa de accesare XML mai aproape de sintaxa de accesare JSON. Ex:
n loc de: nodparinte->firstChild->nodeValue Primul nod fiu se va putea accesa prin sintaxa obiectuala: nodparinte->nodfiu
Detalii DOM
Node ofer majoritatea proprietilor i este motenit de o serie de clase mai specializate, ce adaug metode specifice tipurilor de noduri: Element, Attr, CharacterData, Comments, DocumentFragment Document ofer o serie de proprieti la nivel de document DOMImplementation ofer proprieti legate de detectarea versiunii DOM NodeList proprieti pt lucrul cu colecii ordonate de noduri (ex: vectorul fiilor) NamedNodeMap pt lucrul cu colecii neordonate de noduri (ex: vectorul atributelor) Mai exista o serie de clase auxiliare (extensii) care nu sunt disponibile n toate implementrile - e vorba de cele care permit manipularea nodurilor speciale sau mai rar utilizate din XML (instruciuni de procesare, entiti, notaii, seciuni CData)
Clasa Document
Clasa Document motenete clasa Node dar ofer proprieti suplimentare, apelabile de la nivelul rdcinii:
getElementById (cu condiia ca documentul s fie validat i vocabularul s prevad tipul ID pt atributul folosit!) getElementsByTagName documentElement (referin direct la elementul radacin) createElement, createAttribute, createTextNode (metode de creare a unor noduri n RAM, fr a li se indica poziia n arbore => vor trebui ulterior inserate n arbore cu replace/append/setAttribute/nodeValue etc.)
DocumentFragment
Instanele DocumentFragment sunt utile cnd se dorete construirea dinamic a unei buci de document XML (deci XML care nu e nici complet format i nici nu e un element temporar), n scopul alipirii la un arbore DOM cndva n viitor;
cu alte cuvinte e o colecie temporar de frai ce urmeaz s fie inclui ntr-un alt nod
Motenete proprietile clasei Node (deci fragmentului i se vor putea aduga coninut i elemente, dar fr ca fragmentul n sine s fie considerat nod!):
$fragment=$doc->createDocumentFragment() $nod=$doc->createElement(.) $string=<a>ddd</a><b>fff</b> $fragment->appendChild($nod) $fragment->appendXML ($string) $doc->documentElement->appendChild($fragment) - appendChild nu va aduga fragmentul, ci componentele fragmentului - fragmentul accept buci de cod XML concatenate cu appendXML
Clasa Element
Motenete clasa Node i adaug proprieti specifice elementelor: getAttribute/setAttribute/removeAttribute manipularea atributelor tagName returneaz eticheta marcatorului getElementsByTagName cutare de marcatori (dar limitat la subarborele elementului curent)
Clasa Attr
Motenete clasa Node i i adaug proprieti specifice atributelor:
ownerElement (returneaz elementul ce conine atributul curent) name/value (nlocuiesc proprietile nodeName/nodeValue la atribute)
NodeList i NamedNodeMap
NodeList ofer proprieti pt lucru cu colecii ordonate de noduri, ce pot fi parcurse prin indice (ex:childNodes):
length (nr. de noduri din colecie) item[n] (returneaz nodul n din vector)
NamedNodeMap ofer proprieti pt lucru cu colecii de noduri ce se pot accesa prin nume (ex:attributes):
getNamedItem/setNamedItem/removeNamedItem (citete / modific /terge un nod din colecie) => dac e vorba de atribute, au acelai efect cu getAttribute/setAttribute/removeAttribute