PHP: Čtení XML třídou SimpleXML

PHP Práce se soubory PHP: Čtení XML třídou SimpleXML

V článku PHP: Čtení XML metodou SAX jsem se zmínil, že metodu SAX byste měli používat jen ve speciálních případech. Nyní si ukážeme jiný způsob: Třídu SimpleXML.

Třída SimpleXML je určena pro jednoduchou konverzi dokumentu XML do objektů v PHP. Na rozdíl od třídy XMLreader však dokument nečteme v cyklu po jednotlivých elementech, ale je celý načten to objektové struktury. To je velmi výhodné, protože nejpomalejší úkon provádí standardní knihovna, která je pro tento účel optimalizována.

Pro čtení jsem opět použil stejná data.

<?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 vypisující data je velmi krátký. Původně jsem chtěl vytvořit i třídu Uzivatel, ale byla téměř prázdná. Proto jsem použil pouze jednu třídu.

<?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);
  }
}

Podle potřeby je možné doplnit metody pro vyhledání uživatele, ověření hesla apod. Pro náš účel postačí pouhý výpis seznamu uživatelů. Po spuštění skriptu se objeví:

Pavel Slavík        22  21.3.2000
Jan Novák           31 30.10.2012
Tomáš Marný         16  12.1.2011

Jak je vidět, čtení dokumentu třídou SimpleXMLElement je mnohem jednodušší, než čtení metodou SAX. Je asi 10× rychlejší, než XMLreader a také je lépe zdokumentována. Pro zpracování běžných dokumentů XML je proto mnohem výhodnější.


 

  Aktivity (1)

Článek pro vás napsal Kit
Avatar
Jsem spokojeným uživatelem operačních systémů založených na linuxovém jádře. Zejména openSUSE a Ubuntu. Pro psaní veškerých textů a programů používám vynikající textový editor Vim. Aplikace se snažím psát vždy v tom nejvhodnějším programovacím jazyk...

Jak se ti líbí článek?
Celkem (1 hlasů) :
4444 4


 


Miniatura
Předchozí článek
PHP: Generování XML metodou SAX
Miniatura
Všechny články v sekci
Práce se soubory v PHP

 

 

Komentáře

Avatar
robin
Člen
Avatar
robin:

ahoj, zkousel jsem priklad vyse si spustit, ale hlasi mi to chybu.
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/a2260568/­public_html/tes­t.php:10 Stack trace: #0 /home/a2260568/­public_html/tes­t.php(10): SimpleXMLElement->__construct('tes­t.xml', 0, true) #1 /home/a2260568/­public_html/tes­t.php(3): Uzivatele->__construct('tes­t.xml') #2 {main} thrown in /home/a2260568/­public_html/tes­t.php on line 10

asi nemam cely priklad, muzete mi rict co vse musim krom xml souboru a tridy uzivatele mit pro uspesne spusteni ?dikz

 
Odpovědět 1.5.2014 16:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.