mirror of
https://github.com/php/doc-tr.git
synced 2026-03-24 07:12:18 +01:00
496 lines
13 KiB
XML
496 lines
13 KiB
XML
<?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Ó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><plot></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><line></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><character></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Ó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Ó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
|
||
-->
|
||
|