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
Ce tag se foloseste pentru a adauga liste in elemente <ul> si <ol>?
<dt> <dd> <li><ul>
<li>http://coursesweb.net/html/</li>
<li>http://www.marplo.net/html/</li>
</ul>
Care valoare a proprietatii "display" seteaza elementul ca tip bloc si afiseaza un punct in fata?
block list-item inline-block.some_class {
display: list-item;
}
Care instructiune JavaScript transforma un obiect in sir JSON.
JSON.parse() JSON.stringify eval()var obj = {
"courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr); // {"courses":["php","javascript","ajax"]}
Indicati clasa PHP folosita pentru a lucra cu elemente HTML si XML in PHP.
stdClass PDO DOMDocument$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue; // CoursesWeb.net
Indicati forma de Prezent Continuu a verbului "to live" (a trai /a locui)
lived living liveingI`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
viviĆ³ vivido viviendoEstoy viviendo aquĆ.
- Traiesc /Locuiesc aici.