E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Diverse (10)

Generarea documentelor XML cu DOMDocument

14.11.2009
Generarea documentelor XML cu DOMDocument

Te-ai intrebat vreodata cum poti realiza comunicarea dintre o baza de date MySQL si o aplicatie Flash sau cum poti genera un rss pentru site-ul sau blogul tau? Raspunsul sta in documentele xml, ale caror flexibilitate si simplitate au facut din acest format unul dintre cele mai raspandite limbaje web.

Total vizualizari: 4405 4405 afisari   |   Comentarii  3   |   Rating   |   (8 voturi)   |   Timp necesar: 20 min 20 min   |   Nivel de cunostiinte necesar: Mediu  Mediu

Autor: alexandra Expert
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
1
comenteaza printeaza

Te-ai intrebat vreodata cum poti realiza comunicarea dintre o baza de date MySQL si o aplicatie Flash sau cum poti genera un rss pentru site-ul sau blogul tau? Raspunsul sta in documentele xml, ale caror flexibilitate si simplitate au facut din acest format unul dintre cele mai raspandite limbaje web.

In acest tutorial iti voi prezenta cateva functii de baza din API-ul DOMDocument, care te vor ajuta sa generezi documente xml. Nu uita, pentru a executa codul din exemplele de mai jos vei avea nevoie de un server Apache care sa aiba instalate PHP 5 si biblioteca DOMDocument.

Tipul documentului

Sa incepem cu declararea si headerele documentului XML. In PHP, lucrurile sunt foarte simple – trebuie doar sa creezi o instanta a clasei DOMDocument si sa-i transmiti ca parametrul versiunea de xml si setul de caractere utilizat pentru encodare (utf-8, iso-8859-1). Iata codul:

<?php
// seteaza headerul astfel incat documentul 
// sa poate fi afisat in browser
header("content-type: text/xml; charset=utf-8"); 
 
// creeaza doctype
$XMLDoc = new DOMDocument('1.0','utf-8');
 
// salveaza si afiseaza documentul xml
$XML = $XMLDoc->saveXML();
echo $XML;
?>

Poti observa ca in exemplul de mai sus am apelat metoda saveXML(). Aceasta intoarce continutul documentului xml, care poate fi ulterior afisat in browser sau scris intr-un fisier.

Elemente si noduri text

Totul e minunat pana acum, dar ce faci cu un xml fara continut? Desigur, un document ce nu contine informatii e inutil, deci trebuie sa ii adaugam ceva elemente si date. Pentru aceasta, DOMDocument iti pune la dispozitie o serie de metode pentru crearea elementelor si a nodurilor de text.

Initializarea unui element are loc in doua etape:

  1. Pentru fiecare element sau nod text pe care vrei sa-l creezi trebuie sa apelezi metodele clasei DOMDocument: createElement() si createTextNode(), furnizand ca parametri numele elementului si respectiv textul pe care vrei sa il contina.
  2. Noul element trebuie legat de un nod parinte, fie ca acesta este radacina documentului xml, sau un alt nod din ierarhie. Acest lucru se face prin apelarea metodei appendChild() avand ca argument obiectul returnat de una dintre functiile de mai sus.

Iata un exemplu:

<?php
// seteaza headerul astfel incat documentul 
// sa poate fi afisat in browser
header("content-type: text/xml; charset=utf-8"); 
 
// creeaza doctype
$XMLDoc = new DOMDocument('1.0','utf-8');
 
// creeaza elementul radacina
$RootElement = $XMLDoc->createElement('content','');
$XMLDoc->appendChild($RootElement);
 
// creeaza un element copil
$ChildElement = $XMLDoc->createElement('item', '');
$RootElement->appendChild($ChildElement);
 
// creeaza un nod text
$TextNode = $XMLDoc->createTextNode("Fatboy Slim - Push the Tempo");
$ChildElement->appendChild($TextNode);
 
// salveaza si afiseaza documentul xml
$XML = $XMLDoc->saveXML();
echo $XML;
 
?>

Dupa cum poti vedea in codul de mai sus, mai intai am creat un element radacina denumit content, apoi i-am adaugat un element copil cu numele item. La randul sau, elementul item contine un nod de tip text. Daca salvezi codul intr-un fisier .php si il accesezi intr-un browser, output-ul ar trebui sa arate astfel:

<?xml version="1.0" encoding="utf-8" ?> 
<content>
    <item>Fatboy Slim - Push the Tempo</item> 
</content>

Ca alternativa, poti crea un element cu un continut text astfel:

// creeaza un element copil
$ChildElement = $XMLDoc->createElement('item', 'Fatboy Slim - Push the Tempo');
$RootElement->appendChild($ChildElement);

In acest mod, poti elimina crearea nodului de tip text, rezultatul afisat fiind acelasi.

Atribute

O alta modalitate de a include informatii in cadrul unui element este cu ajutorul atributelor. Acestea sunt adaugate in doi pasi: mai intai este apelata functia createAttribute() din DOMDocument pentru a crea un atribut, apoi acestuia ii este atasat un nod de tip text.

<?php
// seteaza headerul astfel incat documentul 
// sa poate fi afisat in browser
header("content-type: text/xml; charset=utf-8"); 
 
// creeaza doctype
$XMLDoc = new DOMDocument('1.0','utf-8');
 
// creeaza elementul radacina
$RootElement = $XMLDoc->createElement('content','');
$XMLDoc->appendChild($RootElement);
 
// creeaza un element copil
$ChildElement = $XMLDoc->createElement('item', 'Fatboy Slim - Push the Tempo');
$RootElement->appendChild($ChildElement);
 
// creeaza nodul atribut
$AttributeNode = $XMLDoc->createAttribute("filetype");
$ChildElement->appendChild($AttributeNode);
 
// ataseaza atributului un nod text 
$AttributeValue = $XMLDoc->createTextNode("mp3");
$AttributeNode->appendChild($AttributeValue);
 
// salveaza si afiseaza documentul xml
$XML = $XMLDoc->saveXML();
echo $XML;
 
?>

Iata output-ul:

<?xml version="1.0" encoding="utf-8" ?> 
<content>
    <item filetype="mp3">Fatboy Slim - Push the Tempo</item> 
</content>

Blocuri CDATA

Desi nu sunt utilizate foarte des, API-ul DOMDocument ofera suport pentru blocurile CDATA. Pentru cei care nu stiu, limbajul XML contine un set de caractere speciale care sunt: &,<,>,",'. Pentru a le include in continut, ele trebuiesc imbricate in blocuri CDATA, al caror scop este de a-i "spune" parserului xml ca ele nu trebuiesc interpretate ca tag-uri sau procesate.

Adaugarea unui astfel de bloc se face foarte simplu, prin apelarea functiei createCDATASection():

<?php
// seteaza headerul astfel incat documentul 
// sa poate fi afisat in browser
header("content-type: text/xml; charset=utf-8"); 
 
// creeaza doctype
$XMLDoc = new DOMDocument('1.0','utf-8');
 
// creeaza elementul radacina
$RootElement = $XMLDoc->createElement('content', '');
$XMLDoc->appendChild($RootElement);
 
// creeaza un element copil
$ChildElement = $XMLDoc->createElement('item', '');
$RootElement->appendChild($ChildElement);
 
// creeaza o sectiune CDATA
$CDATANode = $XMLDoc-> createCDATASection ("<Fatboy Slim - Push the Tempo>");
$ChildElement->appendChild($CDATANode);
 
// creeaza nodul atribut 
$AttributeNode = $XMLDoc->createAttribute("filetype");
$ChildElement->appendChild($AttributeNode);
 
// ataseaza atributului un nod text 
$AttributeValue = $XMLDoc->createTextNode("mp3");
$AttributeNode->appendChild($AttributeValue);
 
// salveaza si afiseaza documentul xml
$XML = $XMLDoc->saveXML();
echo $XML;
 
?>

Iata rezultatul:

<?xml version="1.0" encoding="utf-8" ?> 
<content>
    <item filetype="mp3">
        <![CDATA[ <Fatboy Slim - Push the Tempo> ]]> 
    </item>
</content>

Cam atat pentru acest tutorial. Pentru a vedea lista completa a functiilor si proprietatilor DOMDocument, poti accesa acest link.

Pagina:
1
comenteaza printeaza

Cuvinte cheie:   php,   xml,   domdocument,   element,   atribut,   nod,   cdata

Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(8 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (3) spune-ti parerea
alext_1020 alext_1020 , Duminica, 15 Noiembrie 2009, ora 20:17
#3

@Alexandra

Vezi ... de aceea te iubesc eu pe tine :))

Raporteaza acest comentariu ca injurios!
alexandra alexandra , Duminica, 15 Noiembrie 2009, ora 20:10
#2

:)) Mersi Alex, ascultam melodia in timp ce scriam exemplele pt tutorial :D

Raporteaza acest comentariu ca injurios!
alext_1020 alext_1020 , Duminica, 15 Noiembrie 2009, ora 16:04
#1

Desi am renuntat de ceva timp sa mai scriu cod, ma bucur ca totusi mai inteleg si eu cate ceva din programarea web. Ma ajuta foarte mult faptul ca am aceste surse de informatie in caz ca vreau sa fac ceva scurt in pauzele mele de editare foto :)

Am vrut sa-ti dau 4 stelute dar imi place Fatboy Slim - Push the tempo... asa ca iti voi da 5 :)

Keep up the good work!

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4925
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4870
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4735
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4690
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
4505
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Javascript Photoshop AJAX Verilog Word JSON XHTML Dreamweaver Gimp SWF Bridge Lightroom StyleSheet Flash Illustrator RoR CSS Excel SEO PHP Fireworks Python XML PSD COREL DRAW Fotografie Sony Vegas MySQL Vista Action Script HTML Outlook Swift 3D Java Powerpoint Ruby on Rails
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software