PHP: Čítanie XML triedou SimpleXML
V predchádzajúcej lekcii, Práca s textovými súbormi v PHP , sme sa zoznámili s niekoľkými základnými jednoúčelovými funkciami, ktoré v PHP používame pre prácu (nielen) s neštruktúrovanými textovými súbormi.
V článku PHP: Čítanie XML
metódou SAX som sa zmienil, že metódu SAX by ste mali používať len v
špeciálnych prípadoch. Teraz si ukážeme iný spôsob: Triedu
SimpleXML
.
Trieda SimpleXML
je určená pre jednoduchú konverziu dokumentu
XML do objektov v PHP. Na rozdiel od triedy XMLreader
však
dokument nečítame v cykle po jednotlivých elementoch, ale je celý
načítaný to objektové štruktúry. To je veľmi výhodné, pretože
najpomalší úkon vykonáva štandardná knižnica, ktorá je pre tento účel
optimalizovaná.
Pre čítanie som opäť použil rovnaké údaje.
<?xml version="1.0" encoding="UTF-8"?> <uzivatele> <uzivatel vek="22"> <jmeno>Pavel Slavík</jmeno> <registrovan>21.3.2000</registrovan> </uzivatel> <uzivatel vek="31"> <jmeno>Jan Novák</jmeno> <registrovan>30.10.2012</registrovan> </uzivatel> <uzivatel vek="16"> <jmeno>Tomáš Marný</jmeno> <registrovan>12.1.2011</registrovan> </uzivatel> </uzivatele>
Program Vyhlasujúca dáta je veľmi krátky. Pôvodne som chcel vytvoriť aj
triedu Uzivatel
, ale bola takmer prázdna. Preto som použil iba
jednu triedu.
<?php $data=new Uzivatele('data.xml'); echo $data,"\n"; class Uzivatele { private $seznam; function __construct($souborXML) { $this->seznam=new SimpleXMLElement($souborXML, NULL, TRUE); } function __toString() { $out=array(); foreach($this->seznam as $uzivatel) { $out[]=sprintf("%-20s %2d %10s",$uzivatel->jmeno,$uzivatel['vek'],$uzivatel->registrovan); } return implode("\n",$out); } }
Podľa potreby je možné doplniť metódy pre vyhľadanie užívateľa, overenie hesla a pod. Pre náš účel postačí obyčajný výpis zoznamu používateľov. Po spustení skriptu sa objaví:
Pavel Slavík 22 21.3.2000 Jan Novák 31 30.10.2012 Tomáš Marný 16 12.1.2011
Ako je vidieť, čítanie dokumentu triedou SimpleXMLElement
je
oveľa jednoduchšie, ako čítanie metódou SAX. Je asi 10 × rýchlejší,
než XMLreader
a tiež je lepšie zdokumentovaná. Pre spracovanie
bežných dokumentov XML je preto omnoho výhodnejšie.
V budúcej lekcii, Práca so súbormi CSV v PHP , sa zoznámime s prácou so súbormi pomocou tzv. Resources a so štruktúrovanými súbory vo formáte CSV. Znalosti uplatníme v praktickom príklade - jednoduchom webovom plánovača úloh:-)