October, 2008

DOM vs. SimpleXML partea 1

Pentru lucrul cu XML există 2 extensii disponibile în PHP, SimpleXML şi DOM. În următoarele 2 articole voi vorbi pe rând despre fiecare dintre ele, iar la final voi scrie nişte avantaje şi dezavantaje pentru fiecare.

SimpleXML

După cum spune şi numele, extensia SimpleXML este intuitivă şi uşor de învăţat. Ea a fost dezvoltată ca o soluţie intermediară între DOM şi SAX: are un consum de resurse mic, precum SAX, însă nu este aşa de flexibilă, precum DOM.

SimpleXML prezintă funcţii ce permit încărcarea de cod XML din fişiere, string-uri sau noduri DOM.

//încarcare din fişier
$xml = simple_xml_load_file("fisier_sursa.xml");

//încarcare din string
$string = file_get_contents("fisier_sursa.xml");

$xml = simplexml_load_string($string);

De asemenea acest lucru se poate realiza şi prin utilizarea clasei SimpleXMLElement (principala clasă a SimpleXML):

$xml = new SimpleXMLElement("fisier_sursa.xml", null, true);

După încărcarea codului XML, conţinutul poate fi parcurs foarte uşor folosind membrii clasei SimpleXMLElement.

Să presupunem că fişierul sursă invocat mai sus are următorul conţinut:




unitatea 0


unitatea 1
1500 lei


unitatea 2
1200 lei

unitatea 3
3500 lei


Un obiect de tip SimpleXMLElement corespunde fiecarui element din XML, în cazul de mai sus fiind chiar elementul rădăcină. Pentru aflarea numelui se foloseşte metoda getName().

echo $xml->getName(); // va afişa unitati

În cazul acestei extensii sub-elementele sunt tratate precum câmpuri ale obiectului definit, fiecare element copil având un câmp cu numele său.

$server = $xml->server; // $c devine un obiect SimpleXMLElement

echo $server->nume; // va afisa unitatea 0

În cazul în care există mai multe sub-elemente cu acelaşi nume, ele vor fi construite ca un array şi se vor putea apela asemeni acestora.

$calculatoare = $xml->calculator; //preiau toate sub-elementele calculator

foreach ( $calculatoare as $calculator ) echo $calculator->nume; //va afişa pe rând fiecare numele

Conţinutul PCDATA se poate obţine prin conversia la string a unui obiect SimpleXMLElement.

echo $server->nume; // va afisa unitatea 0

Atributele fiecărui element se pot accesa sub forma unui tablou asociativ, având forma elementului căruia aparţin.

echo $server['tip']; //va afişa pc

De asemenea pentru atributele unui element se mai poate folosi şi metoda attributes(), care extrage atributele sub forma unui tablou asociativ de obiecte de tip SimpleXMLElement.
Pe scurt, cam aşa se prezintă extensia SimpleXML. După cum spuneam la început, este foarte intuitivă şi uşor de învăţat. Pentru a nu lungi însa prea mult acest post voi vorbi despre cealaltă extensie pentru lucrul cu fişiere xml în următorul articol.

Tags: , , ,
Posted in Articole, PHP 3 Comments »

Webstock 2008

Azi am dat şi eu o raită pe la webstock, mai pe seară, pentru a asista la decernarea premiilor. Mi s-au părut ok alegerile, mai puţin locul 2 obţinut de 360creative la categoria la care erau înscrişi. Mi se pare de prost gust ce au făcut ei cu site-ul lor.

Organizarea a fost mişto, sponsorii pe măsură, unele premii la fel :D . Să vedem cum va fi la internetics acum.

Tags:
Posted in Evenimente No Comments »