PHP kézikönyv
Előző |  | Következő

# CXLIV. SimpleXML függvények

# Bevezetés

A SimpleXML kiterjesztés nagyon egyszerű és könnyen használható eszközkészletet nyújt XML adatok objektummá kovenrtálásához, amit normális tulajdonságokkal és tömbindexekkel elemezhetünk.

# Követelmények

A SimpleXML kiterjesztéshez PHP 5 szükséges.

# Telepítés

A SimpleXML kiterjesztés alapértelmezett állapotban engedélyezve van. A kikapcsoláshoz használd a --disable-simplexml konfigurálási opciót.

# Példák

Ebben a referenciában sok példához szükséges egy XML karakterlánc. Ahelyett, hogy minden példa előtt megismételnénk, inkább fájlba írjuk és minden példa elején beágyazzuk ezt a fájlt. Ennek a fájlnak a tartalmát a következő példa mutatja. Más megoldásként készíthetsz egy XML fájlt, amit a simplexml_load_file() függvénnyel olvasol be.

Példa 1. Beágyazandó example.php fájl XML karakterlánccal

`<?php
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<movies>
<movie>
<title>PHP: Behind the Parser</title>
<characters>
<character>
<name>Ms. Coder</name>
<actor>Onlivia Actora</actor>
</character>
<character>
<name>Mr. Coder</name>
<actor>El Act&#211;r</actor>
</character>
</characters>
<plot>
So, this language. It's like, a programming language. Or is it a
scripting language? All is revealed in this thrilling horror spoof
of a documentary.
</plot>
<rating type="thumbs">7</rating>
<rating type="stars">5</rating>
</movie>
</movies>
XML;
?>`

A SimpleXML egyszerűsége tisztán látszik, amikor egy kinyerünk egy karakterláncot vagy egy számot egy egyszerű XML dokumentumból.

Példa 2. <plot> kinyerése

`<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr); echo $xml->movie[0]->plot; // "So this language. It's like..." ?>`

Példa 3. Hozzáférés nem egyedi elemekhez SimpleXML-lel

Amikor egy elemből több darab létezik ugyanannak a szülő elemnek az utódjaként, egyszerű körbejárás alkalmazható.

`<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr); /* Minden <movie> elemnek kiíratjuk elkülönítve a <plot> elemét. */ foreach ($xml->movie as $movie) { echo $movie->plot, '<br />'; } ?>`

Példa 4. Attribútumok használata

Eddig csak az elemek neveinek és értékeinek beolvasásával ismerkedtünk meg. A SimpleXML az attribútumokhoz is hozzáfér. Egy elem attribútumainak hozzáféréséhez valójában egy tömböt (array) kell használni, ami tartalmazza az elemeket.

`<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr); /* Hozzáférés az első film (movie) <rating> eleméhez. * Értékelés (rating) skála. */ foreach ($xml->movie[0]->rating as $rating) { switch((string) $rating['type']) { // Attribútum megszerzése elem indexként. case 'thumbs': echo $rating, ' thumbs up'; break; case 'stars': echo $rating, ' stars'; break; } } ?>`

Példa 5. Elemek és attribútumok összehasonlítása szöveggel

Ahhoz, hogy egy elemet vagy attribútumot összehasonlítsunk egy karakterláccal, vagy olyan függvényhez adjuk át paraméterként, ami karakterláncot vár, előtte (string) típuskonverziót kell végrehajtani. Máskülönben a PHP objektumként kezeli az elemet.

`<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr); if ((string) $xml->movie->title == 'PHP: Behind the Parser') { print 'My favorite movie.'; } htmlentities((string) $xml->movie->title); ?>`

Példa 6. XPath használata

A SimpleXML beépített XPath támogatást tartalmaz. Az összes <character> elem megkeresése:

`<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr); foreach ($xml->xpath('//character') as $character) { echo $character->name, 'played by ', $character->actor, '<br />'; } ?>`

'//' helyettesítő jel. Ahhoz, hogy pontos elérést határozz meg, hagyd el az egyik '/' -t.

Példa 7. Értékek beállítása

Nem szükséges, hogy SimpleXML-ben az adatok állandóak legyenek. Az objektum minden elem kezeléséhez engedélyt ad.

`<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr); $xml->movie[0]->characters->character[0]->name = 'Miss Coder'; echo $xml->asXML(); ?>`

A fenti kód kimenete az új XML dokumentum lesz, úgyanúgy néz majd ki, mint az eredeti, kivéve azt, hogy a "Ms. Coder" "Miss Coder"-re változik.

Példa 8. Elemek és attribútumok hozzáadása

A PHP 5.1.3 óta a SimpleXML képes utód elemek és attribútumok könnyű hozzáadásához.

`<?php include 'example.php'; $xml = new SimpleXMLElement($xmlstr); $character = $xml->movie[0]->characters->addChild('character'); $character->addChild('name', 'Mr. Parser'); $character->addChild('actor', 'John Doe'); $rating = $xml->movie[0]->addChild('rating', 'PG'); $rating->addAttribute('type', 'mpaa'); echo $xml->asXML(); ?>`

A fenti kód kimenetként visszaad egy eredetihez XML dokumentumot, de új szereplővel és értékeléssel.

Példa 9. DOM Kezelhetőség

A PHP szerkezetével XML adatokat konvertálhatunk át SimpleXML és DOM formátumok között. Ez a példa egy lehetőséget mutat be DOM elemek SimpleXML elemekké konvertálásához.

`<?php $dom = new domDocument; $dom->loadXML('<books><book><title>blah</title></book></books>'); if (!$dom) { echo 'Error while parsing the document'; exit; } $s = simplexml_import_dom($dom); echo $s->book[0]->title; ?>`

Előző | Tartalom | Következő
shmop_write | Fel | SimpleXMLElement->addAttribute