&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 <filename>example.php</filename> dosyası PHP: Behind the Parser Ms. Coder Onlivia Actora Mr. Coder El 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 problems 7 5 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. - <literal><plot></literal> 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. - <literal><line></literal> 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 atamak SimpleXMLElement 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 Parser Miss Coder Onlivia Actora Mr. Coder El 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 problems 7 5 ]]> - Eleman ve öznitelik eklemek SimpleXMLElement 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 Parser Ms. Coder Onlivia Actora Mr. Coder El ActÓr Mr. 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 problems 7 5 PG ]]> - 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_errors libxml_get_errors