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

# CXLI. SimpleXML függvények

# Bevezetés

A SimpleXML kiterjesztés nagyon egyszeru és könnyen használható eszközt nyújt, hogy XML-t objektummá konvertáljunk, amiket normális tulajdonság-válogatókkal és tömb indexekkel 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 opciót.

# Példák

Több példának ebben a referinciában szükséges XML karakterlánc. Inkább minden példában ugyanazt a karakterláncot használjuk, rakjuk bele egy fájlba, amit minden példában beágyazunk. A következo példában látjuk ezt a fájlt. Vagy készíthetsz egy XML dokumentumot, amit a simplexml_load_file() fügvénnyel olvasol be.

Példa 1. Beágyazandó fájl (example.php) 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 egyszerusége tisztál látszik, amikor valaki kinyer egy karakterláncot vagy számot egy egyszeru XML dokumentumból.

Példa 2. <plot> megszerzése

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

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

Amikor egy elembol több darab létezik egy egyszeru szülo elem utódaként, rendes körbejárás technika használható.

`<?php include 'example.php'; $xml = simplexml_load_string($xmlstr); /* <movie> csomó körbejárása, és <plot> elkülönített kiíratása. */ 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. 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álnod, ami tartalmazza az elemeket.

`<?php include 'example.php'; $xml = simplexml_load_string($xmlstr); /* Access the <rating> nodes of the first movie. * Output the rating scale, too. */ 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 elemet vagy attribútumot összehasonlíts karakterlánccal, vagy föggvényt hívj meg, ami karakterláncot vár, (string) típuskonverziót kell használnod. Másképpen a PHP objektumként kezeli az elemet.

`<?php include 'example.php'; $xml = simplexml_load_string($xmlstr); if ((string) $xml->movie->title == 'PHP: Behind the Parser') { print 'A kedvenc filmem.'; } htmlentities((string) $xml->movie->title); ?>`

Példa 6. Xpath használata

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

`<?php include 'example.php'; $xml = simplexml_load_string($xmlstr); foreach ($xml->xpath('//character') as $character) { echo $character->name, '-t ', $character->actor, ' játssza<br />'; } ?>`

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

Példa 7. Értékek megadá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 = simplexml_load_string($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. DOM Interoperability

A PHP-nak van szerkezete, hogy XML csomókat konvertáljunk SimpleXML és DOM forátumok között. Ez a példa bemutatja, hogyan lehet DOM elemet SimpleXML elemmé változtatni.

`<?php $dom = new domDocument; $dom->loadXML('<books><book><title>blah</title></book></books>'); if (!$dom) { echo 'Hiba a dokumentum feldolgozása közben!'; exit; } $s = simplexml_import_dom($dom); echo $s->book[0]->title; ?>`

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