1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-24 15:22:23 +01:00
Files
archived-doc-tr/reference/simplexml/examples.xml
2021-05-31 19:36:10 +03:00

496 lines
13 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: a0ae28d3bc85f927c22649ebd9a590b921534b7d Maintainer: nilgun Status: ready -->
<chapter xml:id="simplexml.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
&reftitle.examples;
<section xml:id="simplexml.examples-basic">
<title>Temel SimpleXML kullanımı</title>
<para>
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 <function>simplexml_load_file</function> işleviyle de
okutabilirsiniz.
</para>
<para>
<example>
<title>- XML dizge olarak içerilecek <filename>example.php</filename>
dosyası</title>
<programlisting role="php" xml:id="simplexml.examples.movie">
<![CDATA[
<?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;
?>
]]>
</programlisting>
</example>
</para>
<para>
Basit XML eklentisinin basitleştiriciliği, en açık haliyle basit bir XML
belgeden bir sayı veya dizgeyi çıkarırken görülür.
<example>
<title>- <literal>&lt;plot&gt;</literal> içeriğinin eldesi</title>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);
echo $movies->movie[0]->plot;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
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.
]]>
</screen>
</example>
</para>
<para>
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.
<example>
<title>- <literal>&lt;line&gt;</literal> içeriğinin eldesi</title>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $movies->movie->{'great-lines'}->line;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
PHP solves all my web problems
]]>
</screen>
</example>
</para>
<para>
<example>
<title>- Bir elemanın birden fazla örneğine erişim</title>
<simpara>
Bir ebeveyn elemanın aynı isimdeki birden fazla çocuğunun içeriğini elde
etmek için normal yineleme teknikleri kullanılır.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);
/* Her <character> düğümündeki <name> içeriğini çıkaralım */
foreach ($movies->movie->characters->character as $character) {
echo $character->name, ' played by ', $character->actor, PHP_EOL;
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
Ms. Coder played by Onlivia Actora
Mr. Coder played by El ActÓr
]]>
</screen>
</example>
</para>
<note>
<para>
Özellikler (önceki örnekteki <literal>$movies->movie</literal>) dizi
değildir. <link linkend="class.iterator">Yinelenebilir</link> ve
<link linkend="class.arrayaccess">erişilebilir</link> nesnelerdir.
</para>
</note>
<para>
<example>
<title>- Özniteliklerin kullanımı</title>
<simpara>
Ş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.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);
/* İlk <movie> içindeki <rating> 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;
}
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
7 thumbs up5 stars
]]>
</screen>
</example>
</para>
<para>
<example>
<title>- Elemanları ve öznitelikleri karşılaştırmak</title>
<simpara>
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
<literal>(string)</literal> getirerek tür dönüşümü yapmalısınız. Aksi
takdirde PHP, elemanı bir nesne olarak ele alır.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);
if ((string) $movies->movie->title == 'PHP: Behind the Parser') {
print 'My favorite movie.';
}
echo htmlentities((string) $movies->movie->title);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
My favorite movie.PHP: Behind the Parser
]]>
</screen>
</example>
</para>
<para>
<example>
<title>- İki elemanı karşılaştırmak</title>
<simpara>
İki <classname>SimpleXMLElement</classname> nesnesi, aynı elemana ait
olsalar bile, farklı nesneler olarak ele alınır.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$movies1 = new SimpleXMLElement($xmlstr);
$movies2 = new SimpleXMLElement($xmlstr);
var_dump($movies1 == $movies2);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
bool(false)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>- XPath kullanımı</title>
<simpara>
Basit XML eklentisinin yerleşik <acronym>XPath</acronym> desteği vardar.
Tüm <literal>&lt;character&gt;</literal> elemanlarını bulmak isteyelim:
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);
foreach ($movies->xpath('//character') as $character) {
echo $character->name, ' played by ', $character->actor, PHP_EOL;
}
?>
]]>
</programlisting>
<simpara>
'<literal>//character</literal>' ifadesindeki '<literal>//</literal>' bir
kısaltma olup, belgedeki tüm <literal>character</literal> elemanları
anlamına gelir (Bakınız: <link
xlink:href="http://belgeler.gen.tr/recs/xpath/#path-abbrev">XML Adresleme
Dili (XPath) 1.0</link> belirtimi).
</simpara>
&example.outputs;
<screen>
<![CDATA[
Ms. Coder played by Onlivia Actora
Mr. Coder played by El ActÓr
]]>
</screen>
</example>
</para>
<para>
<example>
<title>- Değer atamak</title>
<simpara>
<classname>SimpleXMLElement</classname> nesnesinin verileri birer sabit
değildir. Nesnenin tüm elemanlarında değişiklik yapılabilir.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);
$movies->movie[0]->characters->character[0]->name = 'Miss Coder';
echo $movies->asXML();
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
<?xml version="1.0" standalone="yes"?>
<movies>
<movie>
<title>PHP: Behind the Parser</title>
<characters>
<character>
<name>Miss Coder</name>
<actor>Onlivia Actora</actor>
</character>
<character>
<name>Mr. Coder</name>
<actor>El Act&#xD3;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>
]]>
</screen>
</example>
</para>
<para>
<example>
<title>- Eleman ve öznitelik eklemek</title>
<simpara>
<classname>SimpleXMLElement</classname> nesnesine
çocuk elemanlar ve öznitelikler kolayca eklenebilmektedir.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
include 'example.php';
$movies = new SimpleXMLElement($xmlstr);
$character = $movies->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();
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
<?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&#xD3;r</actor>
</character>
<character><name>Mr. Parser</name><actor>John Doe</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>
<rating type="mpaa">PG</rating></movie>
</movies>
]]>
</screen>
</example>
</para>
<para>
<example>
<title>- DOM ile çalışabilirlik</title>
<simpara>
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 <classname>SimpleXMLElement</classname> nesnesine
dönüştürülmesi gösterilmiştir.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
$dom = new DOMDocument;
$dom->loadXML('<books><book><title>blah</title></book></books>');
if (!$dom) {
echo 'Belge çözümlenirken hata oluştu';
exit;
}
$books = simplexml_import_dom($dom);
echo $books->book[0]->title;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
blah
]]>
</screen>
</example>
</para>
</section>
<section xml:id="simplexml.examples-errors">
<title>XML hatalarıya ilgilenmek</title>
<para>
Belgeleri yüklerken XML hatalarını ele almak basit bir işlemdir. Belgeyi
yüklerken XML hatalarını <link linkend="book.libxml">libxml</link>
işlevselliğini kullanarak bastırdıktan sonra hatalar tek tek ele alınabilir.
</para>
<para>
<function>libxml_get_errors</function> işlevi tarafından döndürülen
<classname>libXMLError</classname> nesnesi, hata ile ilgili <link
linkend="libxmlerror.props.message">ileti</link>, <link
linkend="libxmlerror.props.line">satır</link> ve <link
linkend="libxmlerror.props.column">sütun</link> gibi özellikler içerir.
</para>
<para>
<example>
<title>- Hatalı bir XML dizgesinin yüklenmesi</title>
<programlisting role="php" xml:id="simplexml.examples.error">
<![CDATA[
<?php
libxml_use_internal_errors(true);
$sxe = simplexml_load_string("<?xml version='1.0'><broken><xml></broken>");
if ($sxe === false) {
echo "XML yüklemesi başarısız oldu\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
XML yüklemesi başarısız oldu
Blank needed here
parsing XML declaration: '?>' expected
Opening and ending tag mismatch: xml line 1 and broken
Premature end of data in tag broken line 1
]]>
</screen>
</example>
</para>
<section role="seealso"><!-- {{{ -->
&reftitle.seealso;
<para>
<simplelist>
<member><function>libxml_use_internal_errors</function></member>
<member><function>libxml_get_errors</function></member>
<member><xref linkend="class.libxmlerror" /></member>
</simplelist>
</para>
</section>
</section>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->