Aici gasiti cateva din cele mai comune si utilizate functii PHP DOM pentru XML.
Dupa lista cu functiile, gasiti in subsolul paginii un exemplu cu modul de aplicare a unora din aceste functii, din care puteti intelege cum se folosesc.
- Functii principale, de inceput:
- DOMDocument() - Creaza un obiect in memorie. Optional, poate avea parametri pt. versiunea XML si formatul caracterelor datelor, Ex.: $doc = new DOMDocument('1.0', 'utf-8')
- load("nume_fisier") - Incarca in obiect continutul XML din fisierul "nume_fisier".
- loadXML("sir") - Incarca in obiect continutul XML ce se gaseste in sirul "sir"
- Functii pentru elemente, atribute si continutul lor:
- createElement("nume", "continut") - Creaza un nou element (Nod) cu numele "nume" si optional cu un continut text specificat in "continut". Dupa creare se include in obiect cu "appendChild()".
- createAttribute("nume") - Creaza un atribut cu numele "nume". Dupa creare poate fi inclus in obiect cu "appendChild()" si poate primi o valoare cu "createTextNode()"
- setAttribute('nume', 'valoare') - Seteaza (adauga) un atribut cu numele "nume" si valoarea "valoare". Daca exista deja, il modifica.
- getElementsByTagName("tag") - Preia toate elementele cu numele "tag". Pentru toate elementele, cu toate numele, se specifica "*" in loc de "tag".
- createTextNode('text') - Adauga un continut text la un obiect-nod: element sau atribut din obiect. Dupa creare se include in obiect cu "appendChild()".
- getAttribute("nume") - Obtine valoarea atributului "nume" din obiectul curent.
- removeAttribute("nume") - Sterge atributul "nume" din element.
- Functii pentru sistemul ierarhic:
- appendChild($add) - Adauga in obiect un element-copil (atribut sau alta valoare) creat anterior si a carei instanta e stocata in "$add". Acesta este adaugat dupa continutul sau celelalte Noduri din acel obiect.
- removeChild($nod) - Sterge din obiect elementul a carui instanta e stocata in $nod.
- insertBefore($nod_nou, $nod_ref) - Adauga un copil (nod) nou inaintea unuia specificat ca referinta in "$nod_ref".
- parentNode - Obtine elementul parinte al nodului curent, in care acesta e inclus.
- firstChild - Obtine primul copil al obiectului (Nodului) curent.
- lastChild - Obtine ultimul copil al obiectului (Nodului) curent.
- previousSibling - Obtine nodul imediat dinaintea celui curent, din acelasi parinte.
- nextSibling - Obtine nodul urmator dupa cel curent, din acelasi parinte.
- Functii de verificare:
- validate() - Returneaza TRUE daca documentul e valid, in caz contrar FALSE.
- nodeType - Returneaza un numar ce indica tipul nodului curent, numar asocciat cu urmatoarele tipuri:
- 1 - XML_ELEMENT_NODE
2 - XML_ATTRIBUTE_NODE
3 - XML_TEXT_NODE
4 - XML_CDATA_SECTION_NODE
5 - XML_ENTITY_REFERENCE_NODE
6 - XML_ENTITY_NODE
7 - XML_PROCESSING_INSTRUCTION_NODE
8 - XML_COMMENT_NODE
9 - XML_DOCUMENT_NODE
10 - XML_DOCUMENT_TYPE_NODE
11 - XML_DOCUMENT_FRAGMENT_NODE
12 - XML_NOTATION_NODE
- hasAttribute("nume") - Returneaza TRUE daca atributul "nume" e in obiectul curent, in caz contrar FALSE.
- hasAttributes() - Returneaza TRUE daca obiectul curent are atribute, in caz contrar FALSE.
- hasChildNodes() - Returneaza TRUE daca obiectul curent are elemente copil, in caz contrar FALSE.
- Alte functii de lucru:
- childNodes - Preia intr-un obiect o lista (incepand cu index 0) cu toti copii obiectului curent.
- length - Obtine numarul de elemente (Noduri) dintr-un obiect. Ex.: $obiect->length
- item("nr") - Obtine elementul (Nodul) cu indexul (umar de ordine) "nr" din obiect. Ex., primu Nod: $obiect->item(0)
- nodeName - Numele nodului curent
- nodeValue - Valoarea (continutul) nodului curent.
- textContent - Continutul text din nodul curent.
- Functii care sunt de obicei apelate la sfarsit, dupa ce au fost executate celelalte functii:
- save("nume_fisier") - Salveaza structura de date din obiect in fisier-ul "nume_fisier"
- saveXML() - Transforma (stocheaza) structura de date din obiect intr-un sir. Ca parametru poate primi un Dom-Node si astfel va stoca in sir doar continutul acelui Nod.
Exemplu de aplicare
- Se foloseste un document XML preluat dintr-un sir:
<?php
// Pentru aceste exemplele se foloseste un document XML stocat sub forma de sir intr-o variabila $xml_doc
$xml_doc = '<?xml version="1.0" encoding="utf-8" ?>
<root>
<element>
<sub_element nume="se1">Text unu</sub_element>
<sub_element nume="se2">Text doi</sub_element>
</element>
</root>';
$doc = new DOMDocument(); // Creaza un nou obiect in memorie
$doc->loadXML($xml_doc); // Transforma sirul din $xml_doc intr-un obiect, in cel nou creat
$get_elms = $doc->getElementsByTagName("*"); // Preia toate elementele (nodurile) stocate in obiect
// Afiseaza numarul de elemente (Nodes) preluate
echo $get_elms->length; // 4
// Afiseaza numele primului element
echo '<br>'. $get_elms->item(0)->nodeName; // root
// Afiseaza valoarea primului copil din elementul (Nodul) patru
echo '<br>'. $get_elms->item(3)->firstChild->nodeValue; // Text doi
$nods_sube = $doc->getElementsByTagName('sub_element'); // Preia o lista cu elementele (nodurile) 'sub_element'
// Daca al doilea nod din $nods_sube are atributul 'nume', ii afiseaza valoarea
if($nods_sube->item(1)->hasAttributes()) {
echo '<br>'. $nods_sube->item(1)->getAttribute('nume'); // se2
}
// Seteaza inca un atribut celui deal doilea element din $dods_sube
$nods_sube->item(1)->setAttribute('atr', 'atribut nou');
// Creaza un continut text nou
$text_nou = $doc->createTextNode(" - Text nou.");
// Adauga textul din $text_nou la al doilea element din $dods_sube, dupa continutul text pe care deja il are
$nods_sube->item(1)->appendChild($text_nou);
// Afiseaza continutul text al primului element din $nods_sube
echo '<br>'. $nods_sube->item(0)->textContent; // Text unu
// Obtine parintele in care sunt elementele (Nodurile) din $nods_sube
$parent_sube = $nods_sube->item(0)->parentNode;
// Sterge primul element din $nods_sube (apeland functia din parintele acestuia)
$parent_sube->removeChild($nods_sube->item(0));
// Adauga sub forma de sir continutul obiectului rezultat dupa aceste prelucrari
$doc_fin = $doc->saveXML();
echo '<br>'. htmlentities($doc_fin); // Afiseaza sirul, transformand tag-urile pt. a fi vizibile in navigator
?>
-
Lista completa cu functiile PHP DOM o gasiti la pagina Functii PHP DOM
Un Test simplu in fiecare zi
HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag se foloseste in <table> pentru a crea celula de tip "header"?
<thead> <th> <td><table><tr>
<th>Title 1</th>
<th>Title 2</th>
</tr></table>
Ce proprietate CSS seteaza distanta dintre randuri?
line-height word-spacing margin.some_class {
line-height: 150%;
}
Care functie deschide o noua fereastra.
alert() confirm() open()document.getElementById("id_button").onclick = function(){
window.open("http://coursesweb.net/");
}
Indicati functia PHP care returneaza un array cu numele fisierelor si directoarelor dintr-un director.
mkdir() scandir() readdir()$ar_dir = scandir("dir_name");
var_export($ar_dir);
Care din urmatoarele forme a verbului "sleep" (a dormi) se foloseste pentru viitor?
sleeping slept will sleepHe will sleep there.
- El va dormi acolo.
Care din urmatoarele forme a verbului "dormir" (a dormi) se foloseste pentru viitor?
dormido dormirá durmiendoÉl dormirá allí.
- El va dormi acolo.