Curs Php-mysql

SimpleXML a aparut in PHP 5. Lucreaza ca si DOM, cu obiecte, preia tot documentul XML sub forma unui arbore ierarhic in memorie, dar spre deosebire de acesta, e mai flexibil si foloseste mai putina memorie deoarece elementele sunt stocate direct ca variabile PHP (de tip string si array) si astfel pot fi imediat utilizate. Foloseste un minim necesar de cod si are o forma intuitiva a datelor.
- In SimpleXML se lucreaza mult cu functii pentru Array, majoritatea datelor sunt stocate in variabile de tip array.
Este util cand se doreste citirea catorva date dintr-un document XML, a carui structura o cunoasteti, si scrierea altora inapoi.
Ca si in cazul DOM, este indicat ca documentul XML sa aibe un format corect facut, cel mai bine, valid.

1. Citire document XML cu SimpleXML

La inceput se preia documentul XML dintr-un fisier (cu simplexml_load_file().) sau dintr-un sir (cu simplexml_load_string()) care este imediat adaugat sub forma de obiect in memorie.
Apoi se face referire direct la oricare element din obiect, dupa cum puteti vedea in exemplul de mai jos (trebuie sa stiti structura datelor XML si elementele pe care doriti sa le folositi).

Ca model, va fi folosit urmatorul document XML, stocat intr-un fisier "exemplu_simplexml.xml":
<?xml version="1.0" encoding="utf-8"?>
<carti>
 <titlu titlul="Titlu Carte" id="1">
  <autor nume="Nume Autor" />
  <text>Un text din carte</text>
  <text>Un alt paragraf din carte</text>
  <pret suma="0" />
 </titlu>
 <titlu titlul="Titlu a doua carte" id="2">
  <autor nume="Nume Autor carte 2" />
  <text>Un text din a doua carte</text>
  <text>Un alt paragraf din cea dea doua carte</text>
  <pret suma="00" />
 </titlu>
</carti>

- Urmatorul script preia si afisaza cateva date din acest document XML (explicatiile necesare sunt in cod).
<?php
$obj = simplexml_load_file("exemplu_simplexml.xml");          // Calea si numele fisierului .xml

$titlu = $obj->titlu;                    // Preia toate elementele cu nume "titlu" (intr-o variabila tip array)
$text = $obj->titlu[0]->text;            // Preia toate elementele cu nume "text" din primul element "titlu"

// Parcurge matricea cu $titlu si preia intr-un array elementele "autor" si "pret" din fiecare
for($i=0; $i<count($titlu); $i++) {
  $autor[] = $titlu[$i]->autor;
  $pret[] = $titlu[$i]->pret;
}

// Afiseaza valoarea atributului "nume" din primul element "autor"
echo $autor[0]['nume']. '<br>';            // Nume Autor

// Afiseaza valoarea atributului "suma" din al doilea element "pret"
echo $pret[1]['suma']. '<br>';            // 00

// Parcurge matricea $text (cu elementele "text" din primul "titlu")
// Afiseaza valoarea fiecaruia
for($i=0; $i<count($text); $i++) {
  echo $text[$i]. ' - ';             // Un text din carte - Un alt paragraf din carte
}
?>
- Testati singuri exemplul pentru a vedea rezultatul (folosind documentul XML "exemplu_simplexml.xml").

2. Modificare document XML cu SimpleXML

Pe langa a prelua si folosi date dintr-un document XML, cu SimpleXML se poate si adauga date noi in acel document.
- Pentru a modifica valorile unor elemente sau atribute deja existente, se identifica acel element (sau atribut - cheie in matricea elementului) in sistemul ierarhic, si i-se atribue o noua valoare (vedeti metoda in exemplu de mai jos).

Daca studiati si testati urmatorul exemplu, puteti intelege cum se modifica document-ul XML (Scriptul va folosi acelasi fisier ca in primul exemplu, "exemplu_simplexml.xml").

<?php
$obj = simplexml_load_file("exemplu_simplexml.xml");          // Calea si numele fisierului .xml

$titlu = $obj->titlu;                    // Preia toate elementele cu nume "titlu" (intr-o variabila tip array)

// Parcurge matricea cu $titlu si adauga, cu "addChild()" inca un element in fiecare, denumit "stoc", cu valoarea 1
for($i=0; $i<count($titlu); $i++) {
  $titlu[$i]->addChild('stoc', 1);
}

// Modifica valoarea atributului 'nume' din elementul "autor" al primul element "titlu"
$titlu[0]->autor['nume'] = 'Nume Modificat';

// Folosind sistemul de lucru cu array, creaza inca un element "autor" (fiind al doilea cu acelasi nume, are indice [key] 1)
$titlu[0]->autor[1] = 'Alt autor';

// Tot cu sistemul de matrice, adauga in al doilea element "autor" inca o cheie 'atribut', cu o valoare, care vor deveni atributul elementului
$titlu[0]->autor[1]['atribut'] = 'Atribut_adaugat';

// Adauga datele XML intr-un sir
$xml_doc = $obj->asXML();

echo htmlentities($xml_doc);             // Afiseaza documentul XML rezultat
?>

- O lista cu mai multe functii utile pentru lucrul cu SimpleXML gasiti la pagina -> Functii SimpleXML

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care atribut specifica metoda HTTP de trimitere (GET, POST) a datelor din formular?
action method value
<form action="script.php" method="post"> ... </form>
Ce proprietate CSS adauga umbra la chenar?
background-image box-shadow border-radius
#id {
  background-color: #bbfeda;
  box-shadow: 11px 11px 5px #7878da;
}
Clic pe functia care elimina primul element dintr-un array?
pop() push() shift()
var fruits = ["mar", "cireasa", "banana"];
fruits.shift();
alert(fruits.length);           // 2
Indicati functia cu care se poate verifica daca un anumit modul e instalat in PHP.
function() filetype() extension_loaded()
if(extension_loaded("PDO") === true) echo "PDO este valabil."
Alegeti verbul auxiliar corect care trebuie in propozitia: " ... I listen to music?".
has have Can
 Can I listen to music?
- Pot asculta muzica?
Alegeti verbul corect care trebuie in propozitia: "Me ... las frutas dulces"
están gustan gusta
Me gustan las frutas dulces.
- Imi plac fructele dulci.
PHP XML - SimpleXML

Last accessed pages

  1. Data si ora - Exercitii incepatori (8435)
  2. Editare clasa la obiecte din Library (68)
  3. Verbe reflexive 1 (11805)
  4. Gramatica limbii spaniole. Indrumator si prezentare generala (70607)
  5. Script Upload pentru Galerie de Imagini si fisiere Audio (918)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (105)
  2. Gramatica limbii engleze - Prezentare Generala (49)
  3. Coduri pt culori (43)
  4. Cursuri limba engleza gratuite si lectii online (40)
  5. Gramatica limbii spaniole. Indrumator si prezentare generala (40)