Citirea dintr-un XML

Tutorial PowerPoint

XML sau eXtensible Markup Language reprezintă o modalitate de a structura informaţii într-un mod comun tuturor limbajelor de programare. În fişierele XML informaţia este strucurată cu ajutorul unor taguri de marcare, la fel ca în HTML (corect spus este ca html este un fel de XML). Toate tagurile din interiorul fişierului se află într-un tag, numit tag root, pe care îl folosim ca să adăugam taguri noi în fişier. Nu se pot adăuga mai multe taguri root. În exemplul nostru tagul root va fi tagul “persoane”.

< ?XML version="1.0" encoding="ISO-8859-1"? >
< persoane >
< persoana >
< nume >Marin< /nume>
< prenume >Georgescu< /prenume>
< /persoana>
< nume >Florin< /nume >
< prenume >Popescu< /prenume >
< persoana >
< /persoana >
< /persoane >

Aplicaţia din exemplul nostru se va folosi de un fişier XML pentru a stoca numele şi prenumele unor persoane. Pentru asta vom crea o pagina php ce conţine un form care preia numele şi prenumele, trimitându-le prin get aceleiaşi pagini. Din acest motiv în pagina vom avea cod php în două locuri, însa pentru ambele cazuri vom avea nevoie de definirea obiectului de tip DOMDcoument, lucru pe care îl facem in partea de sus a paginii. Tot în partea de sus a paginii vom avea structura care se ocupă cu scrierea in XML ţi deci se execută dacă s-a transmis ceva prin GET. Cealaltă parte de cod php este partea care va afişa elementele din XML, va fi scrisă după elementul form, şi va fi executată întotdeauna.

< ?php $doc = new DOMDocument(); $doc->load(„fisier.xml”);
$root = $doc->documentElement;

if (isset($_GET[„executat”])){
$persoana = $doc->createElement(„persoana”);
$nume = $doc->createElement(„nume”,$_GET[„nume”]);
$prenume = $doc->createElement(„prenume”,$_GET[„prenume”]);

$persoana->appendChild($nume);
$persoana->appendChild($prenume);

$root->appendChild($persoana);
$doc->Save(„fisier.xml”);
}
?>
< html >
< head >
< title >DomDocument< /title >
< /head >
< body >
< form action="XML.php" >
Nume     < input type="text" name="nume" />< br />
Prenume < input type="text" name="prenume" />< br />
< input type="submit" name="executat" value="Salveaza"/ >
< /form>
getElementsByTagName(„persoana”);
foreach ($elemente AS $element){
$date = $element->childNodes;
echo „< h3 >„;
foreach ($date AS $data){
echo $data->nodeValue.” „;
}
echo „

„;
}

?>
< /body>
< /html>

Parcurgerea cu php se va face cu ajutorul unui obiect de tip DOMDocument. Acesta are metoda load, metoda ce primeste ca parametru calea catre fisierul XML. Pentru a putea lucra cu fisiere XML va trebui sa ne folosim de elementul root, atat pentru citire cat si pentru scriere. Ne legam la root-ul documentului folosin proprietatea documentELement.

Parcurgerea se face folosind rezultatul metodei getElementsByTagName(), metoda ce creaza o lista de noduri(elemente) ce corespund numelui respective. In aplicatia noastra parcurgem elementele intr-un foreach. La fiecare parcurgere a foreach-ului ne aflam la cate un element de tip persoana. Insa vrem sa afisam valorile elementelor din interiorul elementului persoana. Extragem elementele interioare unui alt element folosind proprietatea childNodes. Atentie ca childNodes nu este acelas lucru cu getElementsByTagName intrucat childNodes returneaza toate elementele interioare. Parcurgem si lista returnata de childNodes si afisam valoarea din interiorul elementelor folosindu-ne de proprietatea nodeValue.

Introducerea de date in XML se face creeând un element pe care îl adăugăm root-ului. Dupa ce l-am adăugat pentru a şi scire în fişierul XML vom apela metoda Save(). Aceasta primeşte ca parametru calea către fişierul respectiv. Pentru a creea elementul “persoana”, element ce îl vom adauga în root vom folosi metoda createElement() a obiectului de tip DOMDocument. Aceasta poate să primească mai multe structuri de parametrii. Daca îi transmitem un singur parametru de tip text atunci se va crea un element simplu, având numele valoarea transmisa prin parametru. Dacă după parametrul corespunzător numelui ăi mai transmitem un al doilea prametru de tip text, atunci acea a doua valoare va fi textul interior elementului. În cazul nostru atribuim decât numele pentru elementul persoana, iar pentru cele doua elemente, nume şi premume, vom transmite şi al doilea prametru, şi anume valorile corespunzătoare transmise prin GET. Pentru a faca elementele nume şi prenume să aparţină elementului persoana ne folosim de metoda appendChild ce primeşte ca parametru elementul ce va fi adaugat elementului care a apelat metoda. Aceast lucru va trebui sa îl facem pentru adăugarea elementului nou creat, persoana, în root. La final, dupa cum am spus, apelăm metoda Save ca să salvăm structura din memoria virtuala în fişier.

Linkuri utile:

Vă invităm să încercaţi si voi acest exemplu.



Alte articole si tutoriale:
« »

Oferta limitata eBook gratuit: DUBLEZA-TI VENITUL PRIN CUNOSTINTELE DE IT

Inscrie-te la newsletter si vei primi un eBook gratuit. Vei fi si informat despre ofertele speciale, tutoriale gratis si discount-urile pentru cursurile LEC Academy.

Download ebook
×

Abonare email

Accesul la tutorialele gratuite se face pe baza inscrierii la newsletter. Inscrie-te la newsletter-ul LEC Academy si ai acces la peste 40 de lectii gratuite. Daca doresti, vei fi informat despre ofertele speciale, promotiile si discount-urile pentru cursurile LEC Academy.

Vezi lectii gratis
×