&reftitle.examples;
Temel SimpleXML 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.
- XML dizge olarak içerilecek example.php
dosyasıPHP: Behind the ParserMs. CoderOnlivia ActoraMr. CoderEl ActÓr
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.
PHP solves all my web problems75
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.
- <plot> içeriğinin eldesi
movie[0]->plot;
?>
]]>
&example.outputs;
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.
- <line> içeriğinin eldesi
movie->{'great-lines'}->line;
?>
]]>
&example.outputs;
- 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.
düğümündeki içeriğini çıkaralım */
foreach ($movies->movie->characters->character as $character) {
echo $character->name, ' played by ', $character->actor, PHP_EOL;
}
?>
]]>
&example.outputs;
Özellikler (önceki örnekteki $movies->movie) dizi
değildir. Yinelenebilir ve
erişilebilir nesnelerdir.
- Ö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.
içindeki düğümlerine erişelim.
* İstatistiksel sonuçları çıktılayalım. */
foreach ($movies->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;
}
}
?>
]]>
&example.outputs;
- 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.
movie->title == 'PHP: Behind the Parser') {
print 'My favorite movie.';
}
echo htmlentities((string) $movies->movie->title);
?>
]]>
&example.outputs;
- İki elemanı karşılaştırmak
İki SimpleXMLElement nesnesi, aynı elemana ait
olsalar bile, farklı nesneler olarak ele alınır.
]]>
&example.outputs;
- XPath kullanımı
Basit XML eklentisinin yerleşik XPath desteği vardar.
Tüm <character> elemanlarını bulmak isteyelim:
xpath('//character') as $character) {
echo $character->name, ' played by ', $character->actor, PHP_EOL;
}
?>
]]>
'//character' ifadesindeki '//' bir
kısaltma olup, belgedeki tüm character elemanları
anlamına gelir (Bakınız: XML Adresleme
Dili (XPath) 1.0 belirtimi).
&example.outputs;
- Değer atamakSimpleXMLElement nesnesinin verileri birer sabit
değildir. Nesnenin tüm elemanlarında değişiklik yapılabilir.
movie[0]->characters->character[0]->name = 'Miss Coder';
echo $movies->asXML();
?>
]]>
&example.outputs;
PHP: Behind the ParserMiss CoderOnlivia ActoraMr. CoderEl ActÓr
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.
PHP solves all my web problems75
]]>
- Eleman ve öznitelik eklemekSimpleXMLElement nesnesine
çocuk elemanlar ve öznitelikler kolayca eklenebilmektedir.
movie[0]->characters->addChild('character');
$character->addChild('name', 'Mr. Parser');
$character->addChild('actor', 'John Doe');
$rating = $movies->movie[0]->addChild('rating', 'PG');
$rating->addAttribute('type', 'mpaa');
echo $movies->asXML();
?>
]]>
&example.outputs;
PHP: Behind the ParserMs. CoderOnlivia ActoraMr. CoderEl ActÓrMr. ParserJohn Doe
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.
PHP solves all my web problems75PG
]]>
- 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.
loadXML('blah');
if (!$dom) {
echo 'Belge çözümlenirken hata oluştu';
exit;
}
$books = simplexml_import_dom($dom);
echo $books->book[0]->title;
?>
]]>
&example.outputs;
XML hatalarıya ilgilenmek
Belgeleri yüklerken XML hatalarını ele almak basit bir işlemdir. Belgeyi
yüklerken XML hatalarını libxml
işlevselliğini kullanarak bastırdıktan sonra hatalar tek tek ele alınabilir.
libxml_get_errors işlevi tarafından döndürülen
libXMLError nesnesi, hata ile ilgili ileti, satır ve sütun gibi özellikler içerir.
- Hatalı bir XML dizgesinin yüklenmesi");
if ($sxe === false) {
echo "XML yüklemesi başarısız oldu\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
]]>
&example.outputs;
' expected
Opening and ending tag mismatch: xml line 1 and broken
Premature end of data in tag broken line 1
]]>
&reftitle.seealso;
libxml_use_internal_errorslibxml_get_errors