Temel kullanım

Bu eklentideki bir çok örnek bir XML dizge gerektirir. Her örnekte bu dizgeyi tekrar tekrar yazmak yerine her örnekte içerilmek üzere bir dosyaya koyduk. Bu dosyanın içeriği aşağıda verilmiştir. İsterseniz kendi XML belgenizi oluşturup simplexml_load_file() işleviyle de okutabilirsiniz.

Örnek 1 - XML dizge olarak içerilecek example.php dosyası

<?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>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
</movies>
XML;
?>

Basit XML eklentisinin basitleştiriciliği, en açık haliyle basit bir XML belgeden bir sayı veya dizgeyi çıkarırken görülür.

Örnek 2 - <plot> içeriğinin eldesi

<?php
include 'example.php';

$xml = new SimpleXMLElement($xmlstr);

echo 
$xml->movie[0]->plot// "So this language. It's like..."
?>

Bir XML belgedeki elemanlara erişirken, PHP isimlendirme kurallarına uymayan (örneğin, tire içeren) eleman isimleri tek tırnak ve kaşlı ayraçlarla sarmalanarak belirtilebilir.

Örnek 3 - <line> içeriğinin eldesi

<?php
include 'example.php';

$xml = new SimpleXMLElement($xmlstr);

echo 
$xml->movie->{'great-lines'}->line// "PHP solves all my web problems"
?>

Örnek 4 - Bir elemanın birden fazla örneğine erişim

Bir ebeveyn elemanın aynı isimdeki birden fazla çocuğunun içeriğini elde etmek için normal yineleme teknikleri kullanılır.

<?php
include 'example.php';

$xml = new SimpleXMLElement($xmlstr);

/* Her <movie> düğümündeki <plot> içeriğini çıkaralım */
foreach ($xml->movie as $movie) {
   echo 
$movie->plot'<br />';
}

?>

Örnek 5 - Özniteliklerin kullanımı

Şimdiye kadar hep eleman isimleri ve içerikleri ile çalıştık. Basit XML eklentisi eleman özniteliklerine de erişir. Eleman özniteliklerine, eleman ismini taşıyan dizinin anahtarları olarak erişebilirsiniz.

<?php
include 'example.php';

$xml = new SimpleXMLElement($xmlstr);

/* İlk <movie> içindeki <rating> düğümlerine erişelim.
 * İstatistiksel sonuçları çıktılayalım. */
foreach ($xml->movie[0]->rating as $rating) {
    switch((string) 
$rating['type']) { // Öznitelikler birer anahtardır
    
case 'thumbs':
        echo 
$rating' onaylı';
        break;
    case 
'stars':
        echo 
$rating' yıldızlı';
        break;
    }
}
?>

Örnek 6 - Elemanları ve öznitelikleri karşılaştırmak

Bir elemanı veya özniteliği bir dizge ile karşılaştırmak veya bir dizge gerektiren bir işleve aktarmak için nesnenin önüne (string) getirerek tür dönüşümü yapmalısınız. Aksi takdirde PHP, elemanı bir nesne olarak ele alır.

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

Örnek 7 - İki elemanı karşılaştırmak

İki SimpleXMLElement nesnesi, aynı elemana ait olsalar bile, PHP 5.2.0'dan beri farklı nesneler olarak ele alınırlar.

<?php
$el1 
= new SimpleXMLElement($xmlstr);
$el2 = new SimpleXMLElement($xmlstr);
var_dump($el1 == $el2); // PHP 5.2.0'dan sonra FALSE
?>

Örnek 8 - XPath kullanımı

Basit XML eklentisinin yerleşik XPath desteği vardar. Tüm <character> elemanlarını bulmak isteyelim:

<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);

foreach (
$xml->xpath('//character') as $character) {
    echo 
$character->name'played by '$character->actor'<br />';
}
?>

'//character' ifadesindeki '//' bir kısaltma olup, belgedeki tüm character elemanları anlamına gelir (Bakınız: » XML Adresleme Dili (XPath) 1.0 belirtimi).

Örnek 9 - Değer atamak

SimpleXMLElement nesnesinin verileri birer sabit değildir. Nesnenin tüm elemanlarında değişiklik yapılabilir.

<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);

$xml->movie[0]->characters->character[0]->name 'Miss Coder';

echo 
$xml->asXML();
?>

Yukarıdaki kod, özgün belgedeki 'Ms. Coder' dizgesinin yerine 'Miss Coder' dizgesini yerleştirerek yeni bir XML belge çıktılar.

Örnek 10 - Eleman ve öznitelik eklemek

PHP 5.1.3'ten beri, SimpleXMLElement nesnesine çocuk elemanlar ve öznitelikler eklenebilmektedir.

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

Yukarıdaki kod, özgün belgeye yeni elemanlar ve öznitelikler ekleyerek yeni bir XML belge çıktılar.

Örnek 11 - DOM ile çalışabilirlik

PHP, XML düğümlerin Basit XML ve DOM biçemleri arasında dönüşüm yapılabilmeyi sağlayan bir mekanizmaya sahiptir. Bu örnekte bir DOM elemanının bir SimpleXMLElement nesnesine dönüştürülmesi gösterilmiştir.

<?php
$dom 
= new domDocument;
$dom->loadXML('<books><book><title>blah</title></book></books>');
if (!
$dom) {
     echo 
'Belge çözümlenirken hata oluştu';
     exit;
}

$s simplexml_import_dom($dom);

echo 
$s->book[0]->title;
?>