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

Preluarea cursului BNR în mai puţin de 10 linii de cod

Azi am fost nevoit să preiau cursul valutar de pe site-ul bnr pentru a-l stoca în baza de date.  Ştiu că erau pe nu ştiu ce site-uri puse la dispoziţie coduri care fac treaba asta, însă după mine într-o manieră foarte alandala. După mine cel mai simplu de parsat un fişier xml (cum este cel pus la dispoziţie de bnr) este folosind extensiile puse la dispoziţie de php, SimpleXML şi DOM. Eu am ales să folosesc DOM, deoarece rezolvă foarte repede ceea ce am avut nevoie.

Structura fişierului xml care trebuie parsat este urătoarea:

[sourcecode language='xml']



National Bank of Romania
2008-09-25
DR


Reference rates
RON

2.0985
1.8802
2.4202
2.3059
0.1505
0.4930
0.4583
3.6773
4.6475
1.5275
2.3608
0.2414
0.4452
1.1040
0.1000
0.3800
0.1214
2.0194
2.5001
71.4560
3.9396


[/sourcecode]

(evident documentul nu este valid, dar nu ne interesează asta :P )

După cum se observă, ce trebuie noi să facem este preluarea tuturor tagurilor cu numele „Rate”.  Apoi preluăm  numele valutei folosind metoda getAttribute, care returnează valoarea atributului cu numele specificat.

Iată codul care pune în aplicare cele spuse mai sus:

[sourcecode language='php']

/*
* initiez clasa DOMDocument, reprezentand fisierul xml incarcat
*/
$dom = new DOMDocument();
/*
* incarc fisierul xml, specificand adresa completa
*/
$dom->load( “http://www.bnro.ro/nbrfxrates.xml” );

/*
* preiau intr-un obiect iterabil lista elementelor(tagurile) cu numele specificat
*/
$valute = $dom->getElementsByTagName(‘Rate’);

/*
* verific daca sunt elemente de acest tip
*/
if ( $valute->length != 0 )
{
/*

* in caz afirmativ, iterez prin ele si le afiez

* ( evident le pot stoca intr-un array sau chiar in baza de date,

* dupa caz)
*/
foreach ( $valute as $valuta )
{
echo $valuta->getAttribute(currency). ” – ” .$valuta->nodeValue . “
“;
}
}

[/sourcecode]

Dacă nu punem la socoteală, liniile comentate, putem prelua codul bnr în doar 8 linii de cod ! În acelaşi mod se pot prelua şi diferite feed-uri de pe diverse site-uri. Baftă ;)

Tags: , , , ,
Posted in Articole, PHP 2 Comments

Editorul perfect

Pentru mine editorul perfect ar trebui să aibă următoarele caracteristici:

  • syntax highlight
  • inteligent automatic brace/square brackets/parenthesis and single/double quotes closing
  • file explorer
  • brace/parentheses block highlight
  • phpDoc support
  • ftp support

şi cam atât. Cer prea mult? Nu cred. Singurul care s-ar apropia de cerinţele acestea ar fi Eclipse (pdt) însă este IDE (!!!) şi nu are nici suport ftp.

Eu nu ştiu un asemenea editor. Voi aveţi vreo idee?

Tags:
Posted in Diverse No Comments

Concert ARMADA pe 5 Octombrie în Suburbia !

ARMADA = C.T.C., Cedry2k, Carbon, Aforic, Nwanda, Dj Paul, Dj Grand

afiş

afiş

Meet you there ;)

Tags: , , , , ,
Posted in Evenimente, Hip Hop, Recomand 1 Comment

TV.com îşi schimbă design-ul

TV.com, principalul site dedicat serialelor TV, a anunţat că de săptămâna viitoare îşi va schimba design-ul, oferind publicului şi nişte screenshot-uri.

screen1

frontdoor

video

video

showspace

showspace

Pe lângă design-ul îmbunătăţit şi aerisit, noul site va fi wide, un plus faţă de dimensiunea fixă pe care o are acum, ceea ce face să nu încapă foarte multă informaţie.

Să vedem acum produsul final cum va fi, dacă se va ridica la înălţimea aşteptărilor.

Tags: ,
Posted in Recomand, World Wide Web No Comments

Write4Gold 2008, România locul 3 world wide

Citeam azi pe write4gold.info rezultatele de la competiţia a cărei finală s-a desfăşurat weekendul trecut şi constat cu surprindere că locul 3 a revenit României!!! Chiar mă gândeam înainte ce ar fi dacă ar ocupa ai noştrii un loc fruntaş :-D . Reprezentanţii noştirii au fost GIPSY KINGS (o parte din Romanian Delicious) : Serm, Erps, Kero, Home (foarte curios de ce fără Suflo). Locul 1 a revenit celor de la The Most Def (Noua Zeelandă), care şi-au păstrat titlul câştigat anul trecut (te lasă mască, nu alta, ce piese au oamenii ăştia). Locul 2 Danemarcei.

Să vedem ce va fi la anul, poate de această dată va fi o etapă de calificare şi în România (având în vedere că anul ăsta „s-a sărit”).

Tags: , , , , , ,
Posted in Graffiti No Comments

CEC a devenit CEC Bank

Am aflat şi eu azi că CEC s-a schimbat în CEC Bank. Schimbându-şi identitatea şi-au refăcut şi site-ul. Verde şi galben sunt cele 2 culori dominante ale noii identităţi, destul de uşor de înţeles de ce.

Să nu uit, Brandient e responsabil de noua identitate.

Tags: , ,
Posted in Branding, Identitate, World Wide Web No Comments

Noisefun Festival – The HipHop Edition

Line Up:

EMC’s:
MASTA ACE, PUNCHLINE, WORDSWORTH, STRICKLIN

(Brooklyn New York, USA)

PHI LIFE CYPHER
(London, ENGLAND)

MARCO POLO & TORAE
(Toronto, CANADA / Brooklyn New York, USA)

CTC
(Bucuresti, ROMANIA)

Tags: , , , ,
Posted in Evenimente, Hip Hop, Recomand No Comments

Jupiter A ucis melodia – Episodul 1 – No Love

Primul episod din seria „Jupiter A ucis melodia” a apărut pe 31 Martie. Acesta se găseşte la download pe www.jupiterestru.ro şi de cumpărat pe http://www.hiphopkulture.ro/magazin/ sau http://www.sunetesubsol.net/v5/component/option,com_virtuemart/Itemid,123/ .

Synopsis:
It’s 2008, the forces of wackness are ruling the world. Lobotomized individuals and soulless creatures dwell in a polluted environment, sonically brutalized by the media. The earth’s precious common sense resources are down to minimum. The music industry is terrorizing every living soul with their enormous army of clones. In a last attempt to reestablish the balance, Jupiter and his accomplices are killing melody after melody and bringing them back to life in their purest form.
Credits:
Production . . . . . . . . . . . . . . . . Jupiter
lyrics . . . . . . Learic, Pro, Skilltester
Stabbone, Pumpkinhead
Cuts . . . . . . . . . . . . . . . . . . . . . .Dj Faibo X
Recorded at . . . . Jupiter’s loft, Chill
Brothers, Azt Records, Red Army
Mixed by . . . . . . . . . . . . . . . . . . . Jupiter
Copywriting . . . . . . Deliric, Nwanda
Art director . . . . . . . . . . . . . . Jupiter

Tags: , , , ,
Posted in Hip Hop, Recomand No Comments