PHP XML vodič: Stvorite, analizirajte, čitajte s primjerom
⚡ Pametni sažetak
PHP i XML zajedno strukturiraju, pohranjuju i razmjenjuju podatke između sustava. Ovaj vodič objašnjava XML, DOM i XML parsere, zatim pokazuje kako čitati XML dokument pomoću SimpleXML-a i kako ga stvoriti pomoću klase DOMDocument, a završava s time kada koristiti svaki od njih.

Što je XML?
XML je akronim za Extensible Markup Language.
XML se koristi za strukturiranje, pohranu i prijenos podataka iz jednog sustava u drugi.
XML je sličan HTML-u. Koristi početne i završne oznake. Za razliku od HTML-a, XML korisnicima omogućuje definiranje vlastitih oznaka.
Što je DOM?
DOM je akronim za Document Object Model.
To je višeplatformski i jezično neutralan standard koji definira kako pristupiti i manipulirati podacima u:
- HTML
- XHTML
- XML
DOM XML se koristi za pristup i manipuliranje XML dokumentima. To pregledava XML dokument kao struktura stabla.
XML parseri
XML parser je program koji prevodi XML dokument u XML objekt modela objekta dokumenta (DOM).
XML DOM objekt se zatim može manipulirati pomoću Javaskripta, Python, PHP i drugi jezici.
Ključna riječ CDATA, što je akronim za (unparsed) Character Data (neraščlanjeni) znakovni podaci), koristi se za ignoriranje posebnih znakova poput "<" i ">" prilikom parsiranja XML dokumenta.
Zašto koristiti XML?
- Web servisi poput SOAP-a i REST-a koriste XML format za razmjenu informacija. Učenje što je XML i kako funkcionira daje vam konkurentsku prednost kao programeru, budući da moderne aplikacije intenzivno koriste web servise.
- XML dokumenti mogu se koristiti za pohranjivanje konfiguracijskih postavki aplikacije.
- Omogućuje vam stvaranje vlastitih prilagođenih oznaka, što ga čini fleksibilnijim.
Primjer XML dokumenta
Pretpostavimo da ste razvijeniping aplikacija koja dobiva podatke s web servisa u XML formatu.
Ispod je primjer kako izgleda XML dokument.
<?xml version="1.0" encoding="utf-8"?> <employees status = "ok"> <record man_no = "101"> <name>Joe Paul</name> <position>CEO</position> </record> <record man_no = "102"> <name>Tasha Smith</name> <position>Finance Manager</position> </record> </employees>
OVDJE,
- " " određuje XML verziju i kodiranje koje će se koristiti
- “ ” je korijenski element.
- " ... ” su podređeni elementi, jedan po zapisu zaposlenika.
Kako čitati XML koristeći PHP
Napišimo sada kod koji će čitati XML dokument zaposlenika i prikazivati rezultate u web pregledniku. index.php
<?php $xml = simplexml_load_file('employees.xml'); echo '<h2>Employees Listing</h2>'; $list = $xml->record; for ($i = 0; $i < count($list); $i++) { echo '<b>Man no:</b> ' . $list[$i]->attributes()->man_no . '<br>'; echo 'Name: ' . $list[$i]->name . '<br>'; echo 'Position: ' . $list[$i]->position . '<br><br>'; } ?>
OVDJE,
- „$xml = simplexml_load_file('employees.xml');” koristi funkciju simplexml_load_file za učitavanje datoteke pod nazivom employees.xml i dodjeljivanje sadržaja varijabli $xml.
- „$list = $xml->record;“ dohvaća sadržaj čvorova zapisa.
- „for ($i = 0; $i < count(…)…“ je for petlja koja čita niz i ispisuje rezultate
- “$list[$i]->attributes()->man_no;” čita man_no atribut elementa
- “$list[$i]->name;” čita vrijednost podređenog elementa name
- “$list[$i]->position;” čita vrijednost podređenog elementa position
Testiranje XML čitača
Pod pretpostavkom da ste datoteku index.php spremili u mapu phptuts/xml, idite do URL http://localhost/phptuts/xml/index.php
Kako stvoriti XML dokument koristeći PHP
Sada ćemo pogledati kako stvoriti XML dokument koristeći PHP.
Sljedeći kod koristi ugrađenu PHP klasu DOMDocument za izradu XML dokumenta.
<?php $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->xmlVersion = '1.0'; $dom->formatOutput = true; $xml_file_name = 'movies_list.xml'; $root = $dom->createElement('Movies'); $movie_node = $dom->createElement('movie'); $attr_movie_id = new DOMAttr('movie_id', '5467'); $movie_node->setAttributeNode($attr_movie_id); $child_node_title = $dom->createElement('Title', 'The Campaign'); $movie_node->appendChild($child_node_title); $child_node_year = $dom->createElement('Year', 2012); $movie_node->appendChild($child_node_year); $child_node_genre = $dom->createElement('Genre', 'Comedy'); $movie_node->appendChild($child_node_genre); $child_node_ratings = $dom->createElement('Ratings', 6.2); $movie_node->appendChild($child_node_ratings); $root->appendChild($movie_node); $dom->appendChild($root); $dom->save($xml_file_name); echo "$xml_file_name has been successfully created"; ?>
OVDJE,
- „$dom = new DOMDocument();“ stvara instancu klase DOMDocument.
- “$dom->encoding = 'utf-8';” postavlja kodiranje dokumenta na utf-8
- “$dom->xmlVersion = '1.0';” navodi broj verzije 1.0
- “$dom->formatOutput = true;” osigurava da je izlaz dobro formatiran
- “$root = $dom->createElement('Filmovi');” stvara korijenski čvor pod nazivom Filmovi
- „$attr_movie_id = new DOMAttr('movie_id', '5467');” definira atribut movie_id čvora filma
- „$dom->createElement('NazivElementa', 'VrijednostElementa')” stvara podređeni čvor. NazivElementa određuje naziv elementa, npr. Naslov. VrijednostElementa postavlja vrijednost podređenog čvora, npr. Kampanja.
- „$root->appendChild($movie_node);” dodaje čvor filma korijenskom čvoru Filmovi
- “$dom->appendChild($root);” dodaje korijenski čvor XML dokumentu.
- “$dom->save($xml_file_name);” sprema XML datoteku u korijenski direktorij web poslužitelja.
- „echo „$xml_file_name je uspješno kreirana“;“ prikazuje poruku o uspjehu.
Testiranje XML-a Creator
Pod pretpostavkom da ste datoteku create_movies_list.php spremili u mapu phptuts/xml, idite do URL http://localhost/phptuts/xml/create_movies_list.php
Otvorite datoteku movies_list.xml.
SimpleXML u odnosu na DOMDocument
PHP nudi dva glavna načina rada s XML-om. SimpleXML je najbolji kada uglavnom trebate čitati podatke, dok DOMDocument daje finiju kontrolu za izradu i intenzivno uređivanje dokumenata. Tablica u nastavku ih uspoređuje.
| Aspekt | SimpleXML | DOM dokument |
|---|---|---|
| Jednostavnost korištenja | Vrlo jednostavno; dokument se ponaša kao ugniježđeni objekti | Opširniji API temeljen na čvorovima |
| Najbolje za | Čitanje i lagano uređivanje | Izrada dokumenata i složena manipulacija |
| Stil pristupa | $xml->zapis->naziv | createElement() i appendChild() |
| XPath podrška | Da, putem ->xpath() | Da, putem klase DOMXPath |
Praktično pravilo je prvo posegnuti za SimpleXML-om za čitanje feedova i jednostavnih datoteka, a zatim se prebaciti na DOMDocument kada trebate stvarati dokumente, umetati čvorove na određene pozicije ili validirati u odnosu na shemu.



